{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Hands-on 02: Caracterização do desvanecimento de pequena escala\n",
    "\n",
    "\n",
    "## Parte 01:Separação dos desvanecimentos de Larga e Pequena escalas\n",
    "\n",
    "\n",
    "### Objetivos\n",
    "As metas desse tutorial são ajudar o usuário a:\n",
    "- Gerar uma série temporal sintética com Perda de Percurso, Sombreamento e Desvanecimento m-Nakagami;\n",
    "- Estimar cada desvanecimento por meio de regressão linear, filtragem e tratamento estatístico;\n",
    "- Fazer gráficos e comparar as partes geradas sinteticamente e as partes estimadas.\n",
    "\n",
    "\n",
    "## Prática 01: Criação do sinal sintético\n",
    "\n",
    "Vamos escrever um código para criação de um sinal sintético com Perda de Percurso (modelo decaimento logaritmo), Sombreamento Log-Normal e Desvanecimento m-Nakagami. O código deve ser parametrizável e as séries temporais devem ser salvas em arquivo. Gráficos devem ilustrar o comportamento de cada parte do sinal sintético.\n",
    "\n",
    "\n",
    "**Passo 01:** Crie um script chamado **handson3_P1_1.m** com o código a seguir. Nesse código, vamos:\n",
    "\n",
    "1. Criar a estrutura **sPar** de entrada de parâmetros;\n",
    "2. Gerar um canal com desvanecimento de larga e pequena escalas;\n",
    "3. A perda de percurso segue o modelo de log-linear com coeficiente de perda de percurso especificado por **sPar.n**.  geração da perda de percurso deve seguir as seguintes especificações:\n",
    " - O modelo da perda de percurso é $PL = P_0 + 10\\cdot n\\cdot log10(d/d_0)$, sendo $P_0$ a potência medida na distância de referência $d_0$, especificadas por **sPar.P0** e **sPar.d0**, respectivamente; \n",
    " - A distância final da rota de medição é especificada por **sPar.totalLength** em metros;\n",
    " - O número de pontos de medição é especificado por **sPar.nPoints**;\n",
    "4. O sombreamento $Xs$ segue um modelo log-normal com média zero e desvio padrão especificado por **sPar.sigma**. A geração do sombreamento deve seguir as seguintes especificações:\n",
    " - Amostras de sombreamento independentes devem sorteadas para pontos de medição em uma janela de **sPar.shadowingWindow**  amostras (isso quer dizer que depois de **sPar.shadowingWindow**  amostras, o sombreamento é descorrelacionado);\n",
    " - Amostras dentro de uma janela especificada por **sPar.shadowingWindow** devem ser iguais com intuito de modelar o sombreamento correlacionado; \n",
    " - Para evitar variações brutas entre amostras independentes do sombreamento, um filtro média móvel com janela igual a **sPar.shadowingWindow** deve ser aplicado ao vetor de amostras de sombreamento;\n",
    " - Ajustes na média e no desvio padrão devem ser feitos para garantir seus valores amostrais;\n",
    "5. O desvanecimento de pequena escala $Xf$ segue um modelo m-Nakagami com o valor de $m$ especificado por **sPar.m**. A geração do desvanecimento de pequena escala deve seguir as seguintes especificações:\n",
    " - A PDF da envoltória do sinal é m-Nakagami normalizada igual a $f(x; m) = \\frac{2\\cdot m^m}{\\Gamma(m)}\\cdot x^{2\\cdot m-1} \\cdot e^{-m\\cdot x^2} $ [[fonte]](https://pdfs.semanticscholar.org/3e81/7c531d90f63a3c43fe7076189e942d6fed01.pdf);\n",
    "5. Calcular a potência recebida como: $Prx = Ptx - PL + Xs + Xf$, todos em dB."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Canal sintético:\n",
      "   Média do sombreamento: -0.029468\n",
      "   Std do sombreamento: 6.3255\n",
      "   Janela de correlação do sombreamento: 200 amostras\n",
      "   Expoente de path loss: 4\n",
      "   m de Nakagami: 4\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGkCAIAAACgjIjwAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA\nB3RJTUUH4wMcDg0t+4ReSQAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJ\nbmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAyOC1NYXItMjAxOSAxMToxMzo0NEKSKz8AACAA\nSURBVHic7d17fBTV3fjxswmbkFCCvAoEUuQiaGoSpTGEiwIK5SKkoiFalasVxR+gIhfx1YDgk/Kk\nFKVYFVEQKxEvQZHqU80jvLgqqEAAH0JwiVSqAYUAeXEJm7C33x+nTLd7302yc3b3837lj93Zmdnv\nzJzMd8+ZM2cMDodDAACgtzi9AwAAQAgSEgBAESQkAIASSEgAACWQkAAASiAhAQCUQEICACiBhAQA\nUAIJCQCgBBISAEAJJCQAgBJa6B1AM7Lb7ZcuXUpISEhISAjD1+3cubO6ujoxMfGuu+4K57LeTJo0\n6a233vrggw9Gjx4dzu8NzeXLlzds2CCEyM3Nveaaa/QNpjmos6ubRNQfr4gWwYXNEY2WL19+ww03\naNuYlpY2e/bs5v7S/Px8IUS7du3CsOy2bdumT58+ffp0s9nscYbXX39dCLFhwwbfizQm5qZ1+vRp\nebBee+01vWNpFjruar+lJQRRf7wimjr/18GKthqS3W4fPXr0xx9/LN+2atXKarWeOHFi6dKlzz33\nnL6x+dC3b18hROvWrQOc/9ChQ8uXLxdCLF682P3T8+fPf/zxx+vXr3f+feRxkWC/FyHTcVf7Li2A\nOqItIf3hD3+Q2ahXr15vv/12RkaGEOLIkSMvvPCCnMFut3/xxRc1NTVms7lFixbdunXLzc3VFv+/\n//u/U6dOJSYmDhw48MCBAyaTqW3btsOHDw9k2UAcOXLk66+/tlqtSUlJv/jFL3JycuLi4oQQI0eO\nzMnJSUxMDCSMAwcOHDlyRL7etm1by5Yt27Ztm5OTI6d88803Bw8eLCgoSE1N1b7X2yIu3yv98MMP\n5eXlDQ0NiYmJQ4YMSUlJ0T6qrKw8dOiQ1Wrt2LHjrbfeKoMPWX19/f/+7/82NDT069fvZz/7mcd5\n5OZYrdYuXbrccsstzh953JkHDhw4ffq03HVyNrvdvmXLFiFEt27devbs2ZgC4DckyeMOdNnVznHK\nBpZevXr98pe/lB8dPny4Y8eOgwcPDuR7G1NagjqgjTxezpxjLi8vP3LkiPv2+l7b5cuXZTA333xz\n+/btd+zYIYS4/vrrf/GLXwghysvLa2trtS2tra0tLy8XQmRmZnbq1MnvypvjPBBsSdY+9Vicgoqh\n8Seu8NG7itbE2rVrJ4SIj4+vrq72OMPEiRNd9kB2dvZPP/0kP9WqulOnTtVmGDFiRFDLeottxowZ\nLouPHTvW47K+w8jLy3NZz9ChQx0Ox9mzZ10+6tWr1/fff+9jEZfvPXfuXEFBgfNsHTp0kB+dPn16\nxIgRzh916dJlx44doR0mh8Nx7Nixzp07y1UZjcZly5bJ11oTkI/N8bEzFy1aJISIj4/Xjou81CGE\n2LRpUyMLgO+QfO9Al10t19OuXbuxY8dqM7/++uszZ87U3t55552BfG9opSXYA9rI4+VCi/nBBx90\nDqyhoSGQtR07dqxbt25aMLL+5xzM0KFDtS11OBybNm2SM5SUlAQSamPOA+5CK8m+i1NQ56JgA9ZR\nVCWkQ4cOyd09ZMgQb/M8+eSTM2fOfPvtt9etW7dgwQKj0SiEmDJlivxUHkh54B944IFrr71WvpXn\nskCW9ZaQjh49Klc1e/bsdevWlZSUTJw4cerUqR6X9R3G4sWLtV+4BQUF991336JFixxXTj2tWrV6\n9tlnS0pKunTpIoTIzMz0sYjL995xxx1yngEDBvzlL3957LHH5OIOh0M7eU2ZMqWoqKhDhw5CiLZt\n24ZcrPv166f9+z322GNaW5Z2TvGxOT525okTJ+Lj44UQy5Ytc96Z3bp1a3wB8BGS3x3oMSHJwB54\n4IG2bdsKIRITE5OSksaPH5+ZmSk/3bVrl9/vDa20BHtAG3O83Gkxp6enz5gxY9CgQfLtM888E8ja\n/AbjOyH5DbUx5wF3oZVk38UpqHNRsAHrKKoSUllZmTx+9913n4/ZbDbbwYMHy8rKPv74Y1my09LS\n5EdaQTx06JDD4di1a5d8++KLLwa4rLeE9OWXX8pVrVix4sSJEy6fektI3sLQfhJeuHBBTjl8+LCc\nUlxcLKesX79eTtmyZYvHRVy+V1uD9kvQ4XDIX6zaRxMnTpTT3333XTll8eLF7ht76tSpd50cO3bM\nZYaqqiq5+Pjx4+WUV1991fmc4ntzfO9M+W+ck5PjcDjOnTsn//3kWVgKrQD43cM+dqD7IdYS0tGj\nRx0Oh1Yxkof4008/lW/Xrl3r93sbU1oCPKCNPF7uK9Ri1ioKsqte586d/a7NbzCOKwkpLy9PvnVO\nSIGE2pjzgIuQS7Lv4uQ7BvdzUeAB6yuqEtLXX38tD6FWEN2tWLHC/cJy69at5afyQGpvL1y4IGeY\nPn16gMt6S0g2my09PV1bKjExccSIEVoLiceE5C0Mh6dTjFbK3clfhX4TkraGtWvXugSvffT222/L\nKWazWU7RTgrOZIO+SwDOPvzwQ5ePtGMnzym+N8f3ztS6tBw+fPi1114T/9mCF3IB8LuHfexA90Ms\nE1Lbtm3lWxmnuFIl0nZgSUmJ3+9tTGkJ8IA28nh52xva5jscjnvuuUfOb7PZfK/NbzAOnwkpkFAb\ncx5wEXJJ9l2cgjoXBRWwvqKqU0NWVlbr1q0vXLiwcePGkydPOl/VlyorK2Wj8G233TZt2jSj0fin\nP/1J+5GicbnIH9Sy3sTFxX3xxRerV6/etWvXN998c/jw4U8//fTzzz8/e/ast9ukPIbhY/3yxW23\n3SbbBDQub/2uoa6uzttHVqvVZZ4WLTwUobZt2zo3mmvXHtxXaLfb5Qvtf95lBo+b43tn3n777Z07\nd66urn7zzTflb9tRo0bJwtCYAuB3D/vYgd7I1kVn1113XbDf6yNmb4I9oI08Xt7C0L7dZVW+16Z9\ntbdgNA0NDfLF5cuXQwi1Sc4DIZdkH8UpqBgaeeIKN70zYhMrLCyU2zVo0CCtX8Pp06cXLFjgcPrR\n8eGHHzocDrPZLC+Nevtl4fEHcoDLurDZbM5VE62FxLnVxb1Tg3sYcsqKFSvkFJPJJKdUV1fLKY89\n9pjz9+7evdtms3lcxOWLtKsvvXr10m5YkS0qJ06ckMtqF+f+8pe/yCmvvvpqoMfGyU8//SQXv+22\n2+SUoqIiOUX+yPW9Ob53psPhmD9/vhAiLS1NTi8rK5PTG1MA/O5hHzvQfc1apwb5VqshnT592vGf\nNSS/3xtCaQn2gDbyeLmvUGsTkzXCs2fPyotYN9xwg9+1+Q3G4XCMHDlSCNGqVSt5ILSuE4HsT9+7\n1G8RchFySfZRnIIqxsEGrK9oS0hms1m7QBofH9+tW7d27drJ4+pwOA4ePCg/Sk9Pnzp1anZ2trzA\nEMj5KNhlXTQ0NBiNxjvuuGPKlClTp06V9+0mJiaeO3fOfVm/pxitVSoxMbFdu3YzZ850OBxaj6AR\nI0ZMnTp14sSJ8ltku7PHRVy+SOvw06VLl3vuuWfkyJFarx5t5f369cvPz5e79Jprrgn5XkutiSYn\nJ2fEiBGtWrVyOaf42BzfO9PhcBw7dkxcIS9LSI0pAH73sO8dGHJC8vu9jSwtAR7Qxhwv97XJmOPj\n41u1anXnnXdqVQctHfpem99gnnzySTmlW7dumZmZWk00kP3pe5f6LULuQi7J3opTUMU4hIB1FG0J\nyeFwWCyWoqKijh07iiuMRuODDz4oP3322We10jljxgyXxmLf/9tBLese1fXXXy+cdO7cWRtJIdiE\n5HA4Zs6cqbULP/TQQ3LiggUL2rRpo31FUlLSPffco/3uc1/EPeaioiLZ40vq1auXnG6z2QoLC5OS\nkrSPRo4c6d6hIHBnz56VDf1CiLS0tP/5n/9xOaf42BzfO1MaMmSI/EjruCU1pgD43cM+dmBjEpLv\n7w2ttAR7QBtzvNzXpsX84osvypax+Pj4wsJC53l8rM1vMGfPnu3Tp4+ceO2112qd1APZn353qe8i\n5FHIJdlbcQqqGIcQsF6iMCFpTp06tWXLFpPJ5PIvUVdXt23bNueacuAas6zD4bDZbIcPH96yZUuz\n3gRQVVUlq/whr+Ho0aNbtmzRKhwaGf/nn3/u8WdvCL7//vv9+/d7PGdpvG1OyDuzkQfRR0gabzuw\nkRp/ZF0Ee0Abc7ycOZ8xLRbLjh07vB0OH2vTgvE2jtHhw4cPHjzYyFA9Cq0IhVySPRanoGJofJkP\nD4PD4RAAEEZjxozZsGFDu3btampqGr+2M2fOyDviX3vttcmTJzd+hdCLcr3s7Hb7vn37qqurbTab\ny13KzrZu3frpp5/abLasrKz77rsvqC5GAAAFKVdDmj9/fllZWY8ePSorKysqKjzO8+qrr77xxhvT\np09PSUlZvXp169at165dG+Y4AYSsvr5e9vn2NiZesC5evCiEaNmypcdu64gUyiUki8ViNBq3b98+\nffp0bwlpyJAhkydPHjdunBDi6NGjo0aN2r9/f3JycngjBQA0JeWeGCu7JPrWqVOnS5cuydf19fUt\nWrSgyQ4AIl1EVm+feeaZ3//+90ePHjUajQcPHly8eLH7He9CCOcxOQAAQgiTyaR3CF5FZEL66aef\nzp07J4Ro1apVfX29dtu5O5V3fRikp6fH+B4Q7AQhBDtBCMFOEEIo/zM98hKS3W6fMWPGggUL5ONQ\nJ0+ePGjQoAEDBmgj9gMAIpFy15D8amhoqKur0x772L59+8TExB9++EHfqAAAjaRcQrLb7RaLRXYJ\ntVgsFotFTi8tLV2zZo0QIikpKTU1dePGjXL69u3bzWaz9gQtAECEUq7b98cffzxr1iznKRUVFUaj\nce7cuXV1dfLJLvv27Zs9e/a5c+euuuqq06dPP/XUU7ILuAuajAHAmeJnReUSUhNSfNcDQJgpflZU\nrskOABCbSEgAACWQkAAASiAhAQCUQEICACiBhAQAUAIJCQCghMgbyw6RSPEhHYEooPINRgEiISFM\nouC/BVBWdPzmo8kOAKAEEhIAQAk02UFPBoNBr6+O4lEcgQhFQoLOcjOKw/+leyoLA5zz4sWLLVu2\nbNGC/5QgOO+0Ru7A+vp6IUTLli3DsBR0R5MdIJ5++unPPvtMe/vFF19MmDBBvu7evfu2bdu8LVha\nWvrjjz82d3gRx3mn+d6Bfs2ZM2fOnDnhWSqcKDkekZAA8eWXX544cUJ7e/LkyS1btsjX77zzTnZ2\ntrcFH3300UOHDjV7fJHM9w6MWZQcj2iIAHz55JNPOnfu/POf/3z79u2vvfaa2Wz++c9/Pn/+/Kuv\nvnrlypUXLlz485//XFpa+uCDD/bq1evZZ589ePBg27ZtZ86cmZGRIddQW1v73//938eOHRs0aFD7\n9u2FEPfff//jjz9+7733vvfee2fOnHnzzTc3btz41ltvXbhwoUuXLk899VSnTp3kstps1dXVDzzw\nwO233/7HP/5x//79ffv2feqpp4QQ3hbUPP744/fff39paWl1dfXIkSMnT54sp1+6dMk9Wpeo/H57\nIAHIHfjDDz/Ip2tKN9xww+OPP+5tWW2P3XzzzdoiHgN25nEpbxG6H02/iwRyOLzF6fJ1ZWVlziWn\nf//+gZQH3zFHBxISIIQQFy9ePHPmjHx94cIFbfqbb745atSouLi43/72t6tWrUpOTq6trT1z5szV\nV1/dp0+fhISEW265JTs7u0uXLmPGjGnbtu2UKVOOHDnSr1+/AwcOXHPNNUKI0aNH9+zZc8qUKZWV\nlY888sjEiRPvv//+N954Y8uWLQsXLmzVqpUQ4uTJk/fcc0/Lli2/+uqrW2+99ciRI/Lb33jjjc8/\n/7yoqOjChQv33XffHXfcMXz48JycnDlz5qSlpU2YMMHbgpo33nhjx44dRUVFQohHHnnk6quvHj58\nuBDCY7QuUfn9dh+Ru+zAG264IT8/X075r//6r7i4OB/L3n333V26dJkyZUpFRUVJScnEiRO9Bez8\nRR6X8vgtR44ccT+azqsK+XB4jNNqtbp8nUvJkWv2XR78xhwdeGIswsHbsTAYDHp1anAu+cOGDTt5\n8mRqaqp8W1NTU1NTc/z4cSFE+/bt33nnHSHEnDlzPv/885/97GfO65GfDh069MCBAzfffPPZs2fl\nhfTf/va33bp1W7JkSXl5+a233nrx4kU5/29+85tu3bq99NJLKSkpb7zxxpgxY7RV2e32S5cuCSH6\n9Onz17/+tW/fvkKIlJSUtWvXjh49WggxZsyY6667bvHixUKIl156ac+ePWvWrPG2oMZ5DbNmzaqv\nr3/55Ze9ResSVSDf7jEAbbc47yI58wsvvFBSUrJjx47k5GSPy8rYLl68KJPW7bff3rNnz4ceeshj\nwNpmelzqpZde8hjhhQsXPB5NZ6EdDo87dvjw4e5f57Jb/JYHvzEHeLpT/KxIDQkQQoh58+bde++9\n8vXf/va36dOnO386dOjQ3Nzcdu3a3XLLLXl5eY8//rhLt7Fjx47dcsstWreuoUOHbt26VQjxww8/\nDBo0SJvNuUVLNt9p37527drs7Oy4uLgzZ85odTUhRNu2beWLxMTEzMxM+bpNmzaXL1/2vaD7GjIz\nM7/88ksf0bpE5ffbAwxA8/e///1Pf/rTvn37ZDbyuKxs25R5RQgh6wE+ApY8LuUtwlGjRvk+miEf\nDo9x+i087ns+hJijQxRuEtAcVq1atWLFii1btjz99NO1tbV/+MMfnD9NSEj4xz/+ob395z//mZCQ\nIIRo2bKl87Xr+vr6xMRElzWXl5evXbu2qqpKLnLdddcFGFLIC3qLNlhBBVBeXv7II49s2rRJ1kS9\nLZuQkPD9999rS12+fDkxMdFvwB6X8vEtPo5myHtVeN+xvguP+44KNuaoQS87wL+TJ09evny5RYsW\nw4cP/81vfqOd+zp16iTbVYYOHVpbWyt/ttfW1r777rsFBQVCiOHDh1ut1tLSUiFEZWXlhx9+6L5y\nuQb5637jxo1VVVUBRhXygt6iDVbgAfz444+jR4/+61//qnVG8Lbs0KFDT5w48cUXXwghampqPvnk\nk0AC9riUt2/xdjSD3Sh3HuP0+HVayQlwr/qOOWpQQwL8++abb/Ly8gYNGmQ2m48fP/73v/9dTn/q\nqacefvjh8ePHv/rqq+++++7YsWOzsrIqKirGjRsnrzTExcV98MEHv/vd7x5++OFBgwYNHz5ctlY5\nGzhwYK9evTIyMrp27dqqVashQ4YEGFXICyYkJHiMNliBB/DJJ5+cOXNm3Lhx8u3QoUPfeecdj8sm\nJCSUlJSMHDnytttu+/777+XFG78Be1zKW4TejmawG+XOY5zbt293/zrnknP//ff7DcB3zFGDTg0I\nBx+dGsIfjBRCya+trTUajb6vhNfU1LRt29ZbC9jgwYP/3//7f9rFKpeVJyYmuqerQKIKbUG/0TZ3\nAD6WtVqtZ86c0bqZSH4D9riUt2/xfTQbs1Ee4/RbeBoZc3R0aiAhIRxi+Vg8//zzdXV1Xbp0+fDD\nD7/55pu9e/cypA2aXHQkJJrsgOb1xBNPyBfacEQAPKJTAwBACSQkAIASlGuys9vt+/btq66uttls\nPrqi2my2devW7d+/PyEhYfDgwb/+9a/DGSQAoMkpl5AWLFhQVlbWo0ePyspKbwnJYrFMmDDBarXe\nddddZrP5o48+IiEBQKRTLiEtXLhw0aJF27dvdxm7xdmqVasuX778/vvvayOFAI3x9NNP79+/XwjR\nsmXLQYMGPf7449rEuLi4hISELl263H///bm5uS7zS4sWLfrVr36lS+RANFEuIRmNRr/zrF+//tFH\nH62pqTly5EhWVpY2uhQQmi+//LJfv3633nprbW3trFmzamtrFy5cqE20Wq1ff/31qFGjZs2a9fvf\n/17On5OTow1SF5XjLgPhp1xC8stms1VXV2/cuHHZsmXXXHPNnj17Zs6c+dBDD+kdFyJbVlaWHHr5\nxx9/1Aae0SbefvvtI0eO7NWrV0FBgRxbLDs7e9SoUToGDESfyEtIdrtdCPHjjz9u3rzZaDTu3bt3\n3LhxgwcP7tGjh/vM6enp8oXK94LFNL1GavB+P/jJkyc9DgRw4403Zmdnf/HFFzIhffPNN/Kp523a\ntLnxxhubL1KgkbTToPoiLyHFx8fHxcXdfffdsnGvd+/eKSkphw4d8piQyEOqU2agkC1btly8eHHX\nrl1r1qz54IMPPM7TrVu3PXv2TJo0SQixfv36zz//XAiRk5NDQoLKnE+DiienyEtIcXFxPXv2tNls\n2hRZZwIab8CAAU8++eQvf/lLj5+eO3dOu27k/PwkAE1CuV5qdrvdYrFYrVYhhMVisVgscnppaan2\nhMr8/Px169bJQdq3bt166dKl7OxsvQJGdBgyZMjkyZN/97vfectGJ0+e/Oyzz1yexwqgCSlXQyor\nK5s1a5Z8nZWVJYSoqKgwGo3l5eV1dXWyteTBBx+Uz6u/6qqrLl68+Nxzz9HNCc3qq6++euKJJ0aN\nGtW/f3+9YwGilnIJKS8vLy8vz336kiVLnN8uXrxYPs0eaD4TJkyYNGlSXFyc7F+n/VQC0ByUS0hA\n+G3atCnAiX4/AhAy5a4hAQBiEwkJAKAEEhIAQAkkJACAEujUgDBR/BZxALojISEcgh7DyfAfg9zl\nZhQLIfZUFjquDDVkMBi0idoLOaf2wmURYTD0ySj+jykAVEJCgrqcM03jGYRwVBbqNJgrAP+4hgT1\nGAzqDLoKIGyoISGSGPR6XAWA5kcNCRFGtuOFpk9GMTUvQFkkJCiG9jogVpGQEFsMQr/H1ALwiWtI\nUA4XioDYRA0JKjEYDI27SgQgcpGQEHscDlrtAAXRZIco594AaDAYHFemM2oDoA5qSFBG8/Svy80o\n9tgGSMMgoBoSEmJRn4zi3U00IhGApkJCAgAogYQENYT9flhGbQBUQ0ICACiBXnaIae598Oh3B+iF\nGhIUoNP4dQYhHE7d7eh3B+iLhAQAUAIJCXrTdXhv+n8D6uAaEvTHaKoAhIIJyW6379u3r7q62maz\nFRQU+J553759//jHP2699db27duHJzw0E3n9Zg+VFSCGKZeQFixYUFZW1qNHj8rKSt8Jqaam5skn\nn6yurn7rrbdISJFKttfpWkPqk1HsqCykjgboTrlrSAsXLiwvL58+fbrfOefNm/fYY4+FISQAQBgo\nl5CMRmMgs3300UdCiLy8vGYOBwAQJso12QXizJkzzz///DvvvKN3IGgc2ZlBgR4N8oakPnqHAcS4\niExIRUVFkydPTk1NtVgsvudMT0+XL0wmU/PHhaDRlwFobtppUH2Rl5C++uqrvXv3jhkzZvv27Var\nVQixf//+Nm3aXHvtte4zk4cUpHXyZogeIAycT4OKJ6fIS0jx8fGZmZlvvfWWuDLs2ObNm5OTkz0m\nJKgpN6OYWhEAF8olJLvdbrPZZNVHtsjJbg6lpaX19fWTJk3q3bt379695cwWiyUrK2vOnDnaFEQK\nhxAGIXL1DkNjEILO34C+lOtlV1ZWlpWVNW3aNJlssrKyZFoqLy/fvXu33tEBAJqLcjWkvLw8j525\nlyxZ4j7RaDRylQgAooNyNSRALzxDFtAXCQk62M3VGgBuSEgAACWQkAAASiAhAf+myFBGQGwiISHc\nHEL0ySjWOwoAyiEhAQCUQEICACiBhAT8J72fYAvELBISAEAJJCSEl4HaBwDPSEiAG1rtAD2QkAAA\nSiAhAf/BYDDIZkUaF4EwIyEhjAwG4YiAAbVzM4oZ+RsIPxISAEAJJCQAgBJISIBnDLQKhBkJCeES\nIReQXGh9HAA0NxIS4EsuA5MD4UJCArzqk1G8u7JQ7yiAWEFCAgAogYSEsIjMC0gAwomEBABQAgkJ\n8IUhG4CwISGh+dFeByAAJCQAgBJa6B2AK7vdvm/fvurqapvNVlBQ4HGeqqqqTZs2fffdd8nJyXfe\needNN90U5iARIHlLqYORswEEQLka0oIFCx555JG333574cKF3uYZO3bsd99917dvX6PROGHChA0b\nNoQzQgRFu7E0N6M4Qm8yZQwhIDyUqyEtXLhw0aJF27dvnz59urd5Nm/enJKSIl+3adPm5Zdfzs/P\nD1eACM7uysI+GcWC20sB+KNcDcloNPqdR8tGQogOHTpYrdbmjAgQgkHtgOanXEIKisViKSkpGTNm\njN6BIPpFaHsjEEGUa7ILyuzZs9u1azdt2jRvM6Snp8sXJpMpXEEhChmEcFQWUj9CJNJOg+qL4IQ0\nZ86cU6dOvf766/Hx8d7mIQ/pyyFEHyoWgK6cT4OKJ6dITUhz58799ttvS0pKkpOT9Y4FANAElEtI\ndrvdZrPJfgoWi0Vc6eZQWlpaX18/adIkIcT8+fMPHjxYUlKSlJTkPA8AIHIpl5DKyspmzZolX2dl\nZQkhKioqjEZjeXl5XV2dTEjvvfeeEGLAgAFyNqPRWFFRoVO8AICmoVxCysvLy8vLc5++ZMkS7TVX\nhhB+fTKKHdxNBTSnyO72DaVx2w6AYJCQAABKUK7JDpFOqxfxwAkAQSEhoen9a1CDqLviYhDCwbOd\ngGZDkx0AQAkkJDSL3Qy0AyBIJCQAgBJISEAwHA4e1gc0ExISAEAJJCQ0vX89JTYayU7tPKwPaA4k\nJCBoPKwPaA4kJCA4fTKKd0fdLVaACkhIAAAlkJDQxHhKLIDQkJCAoPXJKGb4IKDJkZAAAEogIQEA\nlEBCQpPi9hwAoSIhAaGQ98fqHQUQVUhIAAAlkJCA0DGGENCESEhoOjH2NFU6fwNNi4QEAFACCQkA\noAQSEgBACSQkNJEYu4AkcRkJaEIt9A4AkU3rY8Z5GUAjRWQNyW637927929/+9v69ev1jgU8rQ5A\n04jIGtKCBQvKysp69OhRWVlZUFCgdzgAgCYQkTWkhQsXlpeXT58+Xe9AAMYQAppMRCYko9GodwgA\ngCYWkQkJqnEIEYNd7AA0rYi8hhS49PR0+cJkMukbCQDoQjsNqi/KExJ5COEhLbxy8QAAFN1JREFU\nu787qCZCPc6nQcWTE012QGMZuA0LaAoRWUOy2+02m81qtQohLBaLoJsDAES+iExIZWVls2bNkq+z\nsrKEEBUVFeQkveyuLKSKAKDxIjIh5eXl5eXl6R0FAKApcQ0JAKAEEhKahuEKvQPRB8N+A41HQkKT\nyc0oZqBVACEjIaFRHEL0IQkBaAokJACAEkhIQNNg2G+gkUhIAAAlkJAAAEogIQEAlEBCQiPE7G1H\n3jgcXEYCQkZCAgAogYQEAFACCQloMrIJM5aHUAIag4QENCUGtQNCRkJCqAwGwRO7ATQdEhIAQAkk\nJARNu0bClRKPaLUDQkNCQih4zASAJkdCAgAogYSEUOyuLOQxSACaFgkJaHo8igIIAQkJAKCEFnoH\ngIhBnzoAzYoaEoKQm1Gcm1HsEIILSP4x8jcQJBISAEAJJCSgWXDvMBAsEhLQLLh3GAgWCQnB2V1Z\nyG/+ADGGEBAUFXvZVVVVrV271mw2Dxs2bNiwYR7n2bp166effmqz2bKysu67777ExMQwBwkAaFrK\n1ZBMJlNBQUFqampOTk5RUdGaNWvc53n11VcLCwuzsrIGDhz4wQcfTJ48OfxxAgCalnI1pKVLl44d\nO3batGlCiI4dO86YMWP8+PHx8fHO85SWlj766KPjxo0TQmRmZo4aNerSpUvJycn6RAwAaArK1ZB2\n7tzZv39/+XrgwIENDQ27du1ymadTp06XLl2Sr+vr61u0aEGTXXgwhF2wGEMICJxaNSSz2Wy1Wrt2\n7SrfxsXFJScnnz9/3mW2Z5555ve///3Ro0eNRuPBgwcXL17sUoXSpKenyxcmk6n5wgYAZWmnQfWp\nlZAcDocQokOHDtoUo9Fos9lcZvvpp5/OnTsnhGjVqlV9ff2JEye8rZA8BCDGOZ8GFU9OaiUko9Eo\nhKisrOzdu7ecUl9fn5SU5DyP3W6fMWPGggUL7rrrLiHE5MmTBw0aNGDAgMzMzPAHDARC3h4rf28B\n8Eata0hGozEtLU2r8dTU1JjN5p49ezrP09DQUFdX16lTJ/m2ffv2iYmJP/zwQ7hjjT0MYRcagxAk\nIiAQaiUkIUR+fv7q1asbGhqEEK+88kp2dnb37t2FEKWlpbILeFJSUmpq6saNG+X827dvN5vN1157\nrY4xAwAaT60mOyHE1KlTTSZTbm5u69atU1JSVq5cKaeXl5fX1dVNmjRJCPH888/Pnj17w4YNV111\n1enTpxcsWNCjRw9dowYANJZyCcloNC5fvtx9+pIlS7TXN91009atW8MYFACg2SnXZAdEHwa1AwJB\nQgIAKIGEhMDwYB8AzYyEBABQAgkJCAcGtQP8Uq6XHRDFtIZPRm0A3FFDAsInN6OYR5sD3pCQEACD\nQfCLHkAzIyEBYWIQYndlod5RAOoiIQEAlEBCgh/yOjy3IQFobiQkAIASSEjwg8cgNaE+GcVcRgK8\nISEBAJRAQgIAKIGEBIQVj6IAvCEhAQCUQEKCT3T3BhAuJCQg3Bj5G/CIhATow2AwUP8EnJGQAH0w\n7DfggoQE6IA7ZAF3JCR4x1MnAIQRCQkAoAQSEqAP7pAFXJCQAABKICHBCy4gAQivFnoH4EFVVdXa\ntWvNZvOwYcOGDRvmcR6bzbZu3br9+/cnJCQMHjz417/+dZiDBAA0LeVqSCaTqaCgIDU1NScnp6io\naM2aNe7zWCyWcePGrV+//sYbb+zatetHH30U/jiBxmPIBsCZcjWkpUuXjh07dtq0aUKIjh07zpgx\nY/z48fHx8c7zrFq16vLly++//35cnHIJFQAQGuVO6Dt37uzfv798PXDgwIaGhl27drnMs379+gkT\nJtTU1Hz22We1tbVhjzEGcAEpjBhDCJDUqiGZzWar1dq1a1f5Ni4uLjk5+fz5887z2Gy26urqjRs3\nLlu27JprrtmzZ8/MmTMfeughjytMT0+XL0wmU7NGDoQsN6N4D6M2oNlop0H1qZWQHA6HEKJDhw7a\nFKPRaLPZnOex2+1CiB9//HHz5s1Go3Hv3r3jxo0bPHhwjx493FdIHoLiDEI4KgupH6H5OJ8GFU9O\najXZGY1GIURlZaU2pb6+PikpyXme+Pj4uLi4u+++W87cu3fvlJSUQ4cOhTnUaGYwGK60I9GUBCBs\nlEtIaWlpJ06ckG9ramrMZnPPnj2d54mLi+vZs6dztUnWmdC0cjOKGY4aQDiplZCEEPn5+atXr25o\naBBCvPLKK9nZ2d27dxdClJaWal3A8/Pz161bd+nSJSHE1q1bL126lJ2drWPMQGMwhhAgqXUNSQgx\ndepUk8mUm5vbunXrlJSUlStXyunl5eV1dXWTJk0SQjz44INHjhzp16/fVVdddfHixeeee+7qq6/W\nNWoAQGMpl5CMRuPy5cvdpy9ZssT57eLFixcvXhyuoGKJ7PDNpSMAYadckx0AIDaRkPBvsk8dPevC\njzGEAEFCgjs61wHQBQkJ/+YQog/ZCIBOSEgAACWQkAA10LkRMY+EBABQAgkJAKAEEhKuoLu37mi1\nQ2wjIQEAlKDc0EFATHM4nKuqDp7bi1hCQgKUoKUhx5V7k3mMLGINCQlCCMZUVcK/xsggDyFWcQ0J\nUItBiN3kJMQkEhIAQAkkJEA5fTKKqSQhBpGQAABKICHhSo8GANAVCQlQUZ+MYn4jINbQ7RtQ179v\nTqIKixhADQlQGg/wRewgIcU8LiCpyiAEBwYxhYQEAFACCQkAoAQSEgBACfSyi21cQFKbQQhHZSFD\n3iJGkJDAo2IBKEHFJruqqqqFCxfOnTt306ZNvufct2/f+++/X1NTE57Aohh9iwHoTrmEZDKZCgoK\nUlNTc3JyioqK1qxZ423OmpqaJ598ct68ef/85z/DGSEQTgzZgNihXEJaunTp2LFjp02bdu+99y5a\ntGjZsmU2m83jnPPmzXvsscfCHF7UMBgMsqmO9joAilAuIe3cubN///7y9cCBAxsaGnbt2uU+20cf\nfSSEyMvLC2twUYeWOgDqUKtTg9lstlqtXbt2lW/j4uKSk5PPnz/vMtuZM2eef/75d955x+8K09PT\n5QuTydS0oQJhYxDCQX9IhEo7DapPrYQkR5Ds0KGDNsVoNLo32RUVFU2ePDk1NdVisfheIXnIG4cQ\nfageRRQGWkVonE+DiicntZrsjEajEKKyslKbUl9fn5SU5DzPV199tXfv3s6dO2/fvn3Hjh1CiP37\n91dVVYU5VCDMcjOKaWJFdFOrhmQ0GtPS0k6cOCHf1tTUmM3mnj17Os8THx+fmZn51ltviSs/FTdv\n3pycnHzttdeGP2AgPOQdslRqEd3USkhCiPz8/NWrV48YMSIxMfGVV17Jzs7u3r27EKK0tLS+vn7S\npEm9e/fu3bu3nNlisWRlZc2ZM0ebgoAYDAYhcvWOAgCcKZeQpk6dajKZcnNzW7dunZKSsnLlSjm9\nvLy8rq5u0qRJ+oYH6KVPRvFuhhFCVFMuIRmNxuXLl7tPX7JkiceZ6bYQFHlhnGviABSkVqcGhAH9\n6yIXozYgupGQAABKICEBkcQghGC0J0QpElJsob0OgLJISECkcTioJCEqkZAAAEogIQEAlEBCiiU8\n+yhq0GqHaKTcjbEAfOPuZkQrEhIQYeSY34bKQh6ShChDkx0AQAkkpJjBr+moI2+S5cogogYJCQCg\nBBJSTJA/ovkpDUBlJKSYwIhB0YrxvxFN6GUXtZzrQ5yzAKiPhBTNZP/gPZWFegeCZmQQwuH068NB\n1xVELJrsop9DdsdCVMvNKM6lVRYRjoQERDyDELupByPykZAAAEogIUW53ZWFtNfFgj4ZxVSSEOlI\nSAAAJZCQgCgh70kyXKF3OEDQSEjRbHdlIffDxhSDEI4r3f2BiENCAgAogYQUtRguKDbRuwGRi4QE\nRBsGuEOEUnHooKqqqrVr15rN5mHDhg0bNszjDJs2bfruu++Sk5PvvPPOm266KfxBqs5gMAiRq3cU\nABA45WpIJpOpoKAgNTU1JyenqKhozZo17vOMHTv2u+++69u3r9FonDBhwoYNG8IfJ6Ay+bgRvaMA\ngqNcDWnp0qVjx46dNm2aEKJjx44zZswYP358fHy88zybN29OSUmRr9u0afPyyy/n5+frEKuy5MNh\nOR/FPNn5m+FWESmUqyHt3Lmzf//+8vXAgQMbGhp27drlMo+WjYQQHTp0sFqt4YtPeTyLD5KBx44g\n0qhVQzKbzVartWvXrvJtXFxccnLy+fPnvc1vsVhKSkrGjBnjbYb09HT5wmQyNW2oisvNKOapEwCE\n02lQfWolJNm20KFDB22K0Wi02Wze5p89e3a7du1k+55HsZaHBL294aRPRrGD3yUxz/k0qHhyUqvJ\nzmg0CiEqKyu1KfX19UlJSR5nnjNnzqlTp1asWOFyhQkAEInUqiEZjca0tLQTJ07ItzU1NWazuWfP\nnu5zzp0799tvvy0pKUlOTg5vjEAk4XmyiCBq1ZCEEPn5+atXr25oaBBCvPLKK9nZ2d27dxdClJaW\nal3A58+ff/DgwVWrViUlJVksFovFomfESqEzAzzhebKICGrVkIQQU6dONZlMubm5rVu3TklJWbly\npZxeXl5eV1c3adIkIcR7770nhBgwYID8yGg0VlRU6BUwoDiDEA6G2UUkUC4hGY3G5cuXu09fsmSJ\n9joGuyoEhNuP4IUc4I6SAcUp12SH0HD7EXzjaUlQHwkJiBU8LQmKIyFFCW4/QiB4OAVURkICYgsP\np4CySEhRgWsCCAZjgUNNJCQAgBJISJFP9vYGgvGvTpnUk6ASElKEIxshVFxMgmpISBFMu/eI37kI\nDReToBQSUgSTXb25rQRAdCAhRSyqRWgK/65lU6CgNxISEOu4mARFkJAiE30Z0KT+lZOoJEFXJKQI\nRDZCMzAIwWjx0Jdyj58AoBd5GYknzEIv1JAixr8uO1M9QrORD5ZlUHDohRpSJHFw4wjCQj5klnKG\nMKOGFDGcHzCRy+1HaGZ0c0D4kZAAeEY3B4QZCSlCcNci9CJzEgUQzY9rSJFAdmTgjICwc/4h5JCv\n6VODZkNCUpscPlXQlA/dyKuVe670cSAtofmQkFT0r9tBhDDI/gtC7Kks1DsoxDqZmQyVhQ5ZX3fK\nSf9RkSJXIVRcQ1KUc586QCmGKw8+cR6VlZ6faDwSknoMBrIRFCfvn5W30FIhQlOhyU4xBoNwOAwG\nQ67egQCBkL+cHJWFglZlNBoJSRlcK0bEMjj1fXBo15MozAhSpCakqqqqtWvXms3mYcOGDRs2TO9w\ngqZdBP73v6zDYeBuD0Q+mZycM5OBng4ITEReQzKZTAUFBampqTk5OUVFRWvWrNE7oqA5rvwZtL8r\nV4b1Dg1oGgYh+mQU/3sIIpe/sEtPTw//lyIoEVlDWrp06dixY6dNmyaE6Nix44wZM8aPHx8fH693\nXAFw+s34r9xTWai1degYF9B8nBv0hFv9yWVOiRpVbIrIGtLOnTv79+8vXw8cOLChoWHXrl36huTO\noPWIdfrT6kNAjNPqT84vtJYDDzUqpwRm8ES/TUGTibyEZDabrVZr165d5du4uLjk5OTz58+HPxKD\nx/+ZK38eGuWEEDTKAd7J5GTwkq7c/7kcfnOY05/pyBG/87j8kerCzBBxVeNLly5lZ2fv378/OTlZ\nTunXr19hYeHo0aNd5qTJGABcmEwmvUPwKvKuIRmNRiFEZWVl79695ZT6+vqkpCT3OVXe7wAAF5HX\nZGc0GtPS0k6cOCHf1tTUmM3mnj176hsVAKCRIi8hCSHy8/NXr17d0NAghHjllVeys7O7d++ud1AA\ngEaJvCY7IcTUqVNNJlNubm7r1q1TUlJWrlypd0QAgMaKvE4NAICoFJFNdgCA6ENCAgAoISKvIfkV\n6UOvhsDvJu/du/fYsWPa2969e3fr1i1s4enCbrfv27evurraZrMVFBToHU6zC2R7Y7AYVFVVbdq0\n6bvvvktOTr7zzjtvuukmvSNqdoFsspolIf6ZZ57RO4YmZjKZ7r777ttuu61Hjx7PPvtsfHz8r371\nK72Dal6BbPLLL7/84Ycf2u3248ePHz9+vEePHp06ddIl2rB5+umnly1bdvz48ffee0+OfBjdAtne\nGCwGt99++1VXXdW3b9/a2tqioqK0tLTrr79e76CaVyCbrGhJcESdhx9++I9//KN8vW3btl69elmt\nVn1Dam6BbPK8efPmzZsX9tD0dPnyZYfDsW3btszMTL1jCYdAtjcGi8G5c+e01y+88MLQoUN1DCY8\nAtlkNUtCFF5DioihV5tWgJvc0NDw2WefHTp0KLzR6UYO6hE7AtzeWCsGKSkp2usOHTpYrVYdgwmP\nADdZwZIQbdeQ1Bl6NWwC3+RNmzYdP368oqIiNTV15cqV3E0cm2K2GFgslpKSkjFjxugdSPj43mQF\nS0K01ZAcDocQokOHDtoUo9Fos9n0i6jZBbjJM2bMOHDgwNtvv11eXn7dddc9+uijYY0SaojlYjB7\n9ux27drFwtVEjY9NVrMkRFtC0oZe1aZ4G3o1agS4ye3bt9fmnzZt2rfffms2m8MWJBQRs8Vgzpw5\np06dWrFiRWQ8ybMp+N5kNUtCtDXZxeDQqyFs8uXLl4UQLVpE29FHUGKnGMydO/fbb78tKSnRnlkT\n9YLaZHVKQrTVkERMDr3qbZNLS0vXrFkj59G6OdTW1r744os33HBD1F/zt9vtFotFXtG1WCwWi0Xv\niJqXt+2N8WIwf/78gwcPrlq1KikpKRaKgfC+yeqXhCgcy85isTzxxBOfffaZNvTq1VdfrXdQzcvb\nJs+dO7eurm758uVCiFtuueXcuXNJSUkXL1686aab/vznP6empuodePP6+OOPZ82a5TyloqJChf+6\nZuJte2O8GLg8qNNoNFZUVOgVTHh422T1S0IUJiTp/Pnz586di/pU5MzvJlssloqKiqysrCg+KcMv\nigEkBUtC1CYkAEBkicJrSACASERCAgAogYQEAFACCQkAoAQSEgBACSQkAIASSEgAACWQkAAASiAh\nAQCUQEICACiBhAQAUAIJCQCgBBISAEAJJCQAgBJISAAAJZCQAABKICEBAJRAQgIAKIGEBABQAgkJ\nAKAEEhIAQAkkJACAEkhIAAAlkJAAAEogIQEAlEBCAgAo4f8DMltEPiVkEAwAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nH9u2KYgNW7kAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "% Parâmetros para geração do canal sintético\n",
    "sPar.d0 = 5;                     % distância de referência d0\n",
    "sPar.P0 = 0;                     % Potência medida na distância de referência d0\n",
    "sPar.nPoints = 50000;            % Número de amostras da rota de medição\n",
    "sPar.totalLength = 100;          % Distância final da rota de medição\n",
    "sPar.n = 4;                      % Expoente de perda de percurso\n",
    "sPar.sigma = 6;                  % Desvio padrão do shadowing em dB\n",
    "sPar.shadowingWindow = 200;      % Tamanho da janela de correlação do shadowing (colocar em função da distância de correlação)\n",
    "sPar.m = 4;                      % Parâmetro de Nakagami\n",
    "sPar.txPower = 0;                % Potência de transmissão em dBm\n",
    "sPar.nCDF = 40;                  % Número de pontos da CDF normalizada\n",
    "sPar.chFileName  = 'Prx_sintetico';\n",
    "% Distância entre pontos de medição\n",
    "sPar.dMed = sPar.totalLength/sPar.nPoints;\n",
    "% Vetor de distâncias do transmissor (além da distância de referência)\n",
    "vtDist = sPar.d0:sPar.dMed:sPar.totalLength;\n",
    "% Número de amostras geradas\n",
    "nSamples = length(vtDist);\n",
    "% Geração da Perda de percurso (determinística)\n",
    "vtPathLoss = sPar.P0 + 10*sPar.n*log10(vtDist./sPar.d0);\n",
    "% Geração do Sombreamento (V.A. Gaussiana com média zero e desvio padrão sigma)\n",
    "nShadowSamples = floor(nSamples/sPar.shadowingWindow);\n",
    "vtShadowing = sPar.sigma*randn(1,nShadowSamples);\n",
    "% Amostras para a última janela\n",
    "restShadowing = sPar.sigma*randn(1,1)*ones(1,mod(nSamples,sPar.shadowingWindow));\n",
    "% Repetição do mesmo valor de sombreamento durante a janela de correlação\n",
    "vtShadowing = ones(sPar.shadowingWindow,1)*vtShadowing;\n",
    "% Amostras organizadas em um vetor\n",
    "vtShadowing = [reshape(vtShadowing,1,nShadowSamples*sPar.shadowingWindow),restShadowing];\n",
    "% Filtragem para evitar variação abrupta do sombreamento (filtro média móvel)\n",
    "% O sombreamento tem menos \"2*jan\" amostras devido a filtragem\n",
    "jan = sPar.shadowingWindow/2;\n",
    "iCont = 1;\n",
    "for i = jan+1:nSamples-jan,\n",
    "    vtShadCorr(iCont) = mean(vtShadowing(i-jan:i+jan));\n",
    "    iCont = iCont+1;\n",
    "end\n",
    "% Ajuste do desvio padrão depois do filtro de correlação do sombreamento\n",
    "vtShadCorr = vtShadCorr*std(vtShadowing)/std(vtShadCorr);\n",
    "vtShadCorr = vtShadCorr - mean(vtShadCorr)+ mean(vtShadowing);\n",
    "%\n",
    "% Geração do desvanecimento de pequena escala: Nakagami fading\n",
    "% PDF da envolvtória normalizada\n",
    "fpNakaPdf = @(x)((2.*sPar.m.^sPar.m)./(gamma(sPar.m))).*x.^(2.*sPar.m-1).*exp(-(sPar.m.*x.^2));\n",
    "% Gerador de números aleatórios com distribuição Nakagami\n",
    "vtNakagamiNormEnvelope = slicesample(1,nSamples,'pdf',fpNakaPdf);\n",
    "% Fading em dB (Potência)\n",
    "vtNakagamiSampdB = 20.*log10(vtNakagamiNormEnvelope');\n",
    "%\n",
    "% Cálculo da Potência recebida\n",
    "vtTxPower = sPar.txPower*ones(1,nSamples);\n",
    "% Ajuste do número de amostras devido ao filtro de correlação do\n",
    "% sombreamento (tira 2*\"Jan\" amostras)\n",
    "vtTxPower = vtTxPower(jan+1:nSamples-jan);\n",
    "vtPathLoss = vtPathLoss(jan+1:nSamples-jan);\n",
    "vtFading = vtNakagamiSampdB(jan+1:nSamples-jan);\n",
    "vtDist = vtDist(jan+1:nSamples-jan);\n",
    "% Potência recebida\n",
    "vtPrx = vtTxPower-vtPathLoss+vtShadCorr+vtFading;\n",
    "%\n",
    "% Salvamento dos dados\n",
    "%    Para excel:\n",
    "dlmwrite([sPar.chFileName '.txt'], [vtDist',vtPrx'], 'delimiter', '\\t');\n",
    "%    Matlab\n",
    "save([sPar.chFileName '.mat'],'vtDist', 'vtPathLoss', 'vtShadCorr', 'vtFading', 'vtPrx');\n",
    "%\n",
    "% Mostra informações do canal sintético\n",
    "disp('Canal sintético:')\n",
    "disp(['   Média do sombreamento: ' num2str(mean(vtShadCorr)) ]);\n",
    "disp(['   Std do sombreamento: ' num2str(std(vtShadCorr)) ]);\n",
    "disp(['   Janela de correlação do sombreamento: ' num2str(sPar.shadowingWindow) ' amostras' ]);\n",
    "disp(['   Expoente de path loss: ' num2str(sPar.n) ]);\n",
    "disp(['   m de Nakagami: ' num2str(sPar.m) ]);\n",
    "%\n",
    "% Plot do desvanecimento de larga escala (gráfico linear)\n",
    "figure;\n",
    "% Log da distância\n",
    "log_distancia = log10(vtDist);\n",
    "% Potência recebida com canal completo\n",
    "plot(log_distancia,vtPrx); hold all;\n",
    "% Potência recebida com path loss\n",
    "plot(log_distancia,sPar.txPower-vtPathLoss,'linewidth', 2)\n",
    "% Potência recebida com path loss e shadowing\n",
    "plot(log_distancia,sPar.txPower-vtPathLoss+vtShadCorr,'linewidth', 2)\n",
    "%title('Canal sintético: Potência recebida no receptor vs. log da distância')\n",
    "xlabel('log_{10}(d)');\n",
    "ylabel('Potência [dBm]');\n",
    "legend('Prx canal completo', 'Prx (somente perda de percurso)', 'Prx (perda de percurso + sombreamento)');\n",
    "xlim([0.7 1.6])\n",
    "%\n",
    "% Plot da geração do desvanecimento Nakagami\n",
    "figure;\n",
    "[f,x] = hist(vtNakagamiNormEnvelope,100);\n",
    "bar(x,f/trapz(x,f)); % Histograma normalizado = PDF (das amostras)\n",
    "hold all;\n",
    "plot(x,fpNakaPdf(x),'r'); % PDF da distribuição\n",
    "title('Canal sintético - desvanecimento de pequena escala');\n",
    "legend('Histograma normalizado das amostras','PDF');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**A execução do código resulta em:**\n",
    "1. Mensagem de texto com informações sobre o canal sintético gerado;\n",
    "2. Os seguinte vetores:\n",
    " - vtDist: Pontos de medição [m];\n",
    " - vtPathLoss: Amostras da perda de percurso; \n",
    " - vtShadCorr: Amostras do sombreamento;\n",
    " - vtFading: Amostras do desvanecimento de pequena escala;\n",
    " - vtPrx: Potência recebida com o canal completo.\n",
    "3. Um arquivo .mat com nome especificado no parâmetro **sPar.fileName**;\n",
    "4. Um gráfico mostrando a potência recebida com desvanecimento de larga e pequena escalas;\n",
    "5. Gráfico com histograma e PDF m-Nakagami do desvanecimento de pequena escala.\n",
    " \n",
    "** Analise o código com cuidado. Tente compreender a modelagem e a sintaxe usada. Discuta com os colegas. Faça um debug usando a IDE do Matlab.**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Prática 02: Estimação do parâmetros do canal\n",
    "\n",
    "Vamos escrever um código para, de posse do sinal medido, estimarmos a Perda de Percurso (modelo decaimento logaritmo), o Sombreamento Log-Normal (seu desvio padrão) e Desvanecimento de pequena escala (sua distribuição e parâmetros). O código deve ser parametrizável e gráficos devem ilustrar o comportamento de cada parte do sinal original e estimado.\n",
    "\n",
    "**Passo 01:** Crie uma função chamada **fGeraCanal.m** com o código a seguir. Ele é uma versão do código **handson3_P1_1.m** escrito em forma de função. Isso foi feito para melhor organizar o código da prática 02."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Created file '/home/gppcom/2019/EEC1714/fGeraCanal.m'.\n"
     ]
    }
   ],
   "source": [
    "%%file fGeraCanal.m\n",
    "function [vtDist, vtPathLoss, vtShadCorr, vtFading, vtPrxdBm] = fGeraCanal(sPar)\n",
    "% Propósito: Gerar canal composta de path loss, shadowing e desvanecimento plano\n",
    "%\n",
    "% ENTRADAS: na estrutura sParams\n",
    "%    - nPoints: Número de amostras\n",
    "%    - totalLength: distância máxima da rota\n",
    "%    - P0: potência de referência medida na distância d0\n",
    "%    - d0: distância d0 de referência\n",
    "%    - n: expoente de perda de percurso\n",
    "%    - sigma: desvio padrão do sombreamento lognormal [dB]\n",
    "%    - Tamanho da janela de correlação do sombreamento [amostras]\n",
    "%    - m: parâmetro de Nakagami\n",
    "%    - dMed: distância entre pontos de medição (totalLength/nPoints)\n",
    "%    - txPower: potência de transmissão em dBm\n",
    "%\n",
    "% SAÍDAS:\n",
    "%    - vtDist: pontos de medição [m]\n",
    "%    - vtPathLoss: amostras da perda de percurso\n",
    "%    - vtShadCorr: amostras do somrbeamento\n",
    "%    - fading: amostras do desvanecimento de pequena escala\n",
    "%    - vtPrx: potência recebida com o canal completo\n",
    "%\n",
    "% Parser dos parâmetros de entrada\n",
    "nPoints = sPar.nPoints;\n",
    "totalLength = sPar.totalLength;\n",
    "P0 = sPar.P0;\n",
    "d0 = sPar.d0;\n",
    "n = sPar.n;\n",
    "sigma = sPar.sigma;\n",
    "shadowingWindow = sPar.shadowingWindow;\n",
    "m = sPar.m;\n",
    "dMed = sPar.dMed;\n",
    "txPower = sPar.txPower;\n",
    "%\n",
    "% Distância do transmissor (além da distância de referência)\n",
    "d = d0:dMed:totalLength;\n",
    "nSamples = length(d);\n",
    "%\n",
    "% Geração da Perda de percurso (determinística)\n",
    "vtPathLoss = P0 + 10*n*log10(d./d0);\n",
    "%\n",
    "% Geração do Sombreamento\n",
    "nShadowSamples = floor(nSamples/shadowingWindow);\n",
    "shadowing = sigma*randn(1,nShadowSamples);\n",
    "% Amostras para a última janela\n",
    "restShadowing = sigma*randn(1,1)*ones(1,mod(nSamples,shadowingWindow));\n",
    "% Repetição do mesmo valor de sombreamento durante a janela de correlação\n",
    "shadowing = ones(shadowingWindow,1)*shadowing;\n",
    "% Amostras organizadas em um vetor\n",
    "shadowing = [reshape(shadowing,1,nShadowSamples*shadowingWindow),restShadowing];\n",
    "% Filtragem para evitar variação abrupta do sombreamento\n",
    "jan = shadowingWindow/2;\n",
    "iCont = 1;\n",
    "for i = jan+1:nSamples-jan,\n",
    "    vtShadCorr(iCont) = mean(shadowing(i-jan:i+jan)); %diminuir a variação brusca do sombreamento\n",
    "    iCont = iCont+1;\n",
    "end\n",
    "% Ajuste do desvio padrão depois do filtro de correlação do sombreamento\n",
    "vtShadCorr = vtShadCorr*std(shadowing)/std(vtShadCorr);\n",
    "vtShadCorr = vtShadCorr - mean(vtShadCorr)+ mean(shadowing);\n",
    "%\n",
    "% Geração do desvanecimento de pequena escala\n",
    "% Nakagami fading\n",
    "nakagamiPdf = @(x)((2.*m.^m)./(gamma(m))).*x.^(2.*m-1).*exp(-(m.*x.^2));\n",
    "nakagamiNormEnvelope = slicesample(1,nSamples,'pdf',nakagamiPdf);\n",
    "nakagamiSamp=20.*log10(nakagamiNormEnvelope');\n",
    "%\n",
    "% Cálculo da Potência recebida\n",
    "txPower = txPower*ones(1,nSamples);\n",
    "% Ajuste do número de amostras devido a filtragem\n",
    "txPower = txPower(jan+1:nSamples-jan);\n",
    "vtPathLoss = vtPathLoss(jan+1:nSamples-jan);\n",
    "vtFading = nakagamiSamp(jan+1:nSamples-jan);\n",
    "vtDist = d(jan+1:nSamples-jan);\n",
    "% Potência recebida\n",
    "vtPrxdBm = txPower-vtPathLoss+vtShadCorr+vtFading;\n",
    "% Salva variáveis do canal no Matlab\n",
    "save([sPar.chFileName '.mat'],'vtDist', 'vtPathLoss', 'vtShadCorr', 'vtFading', 'vtPrxdBm');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Passo 02:** Crie um script chamado **handson3_P2_1.m** com o código a seguir. Nesse código, vamos:\n",
    "\n",
    "1. Separar o desvanecimento de larga e pequena escalas. Para isso, faça:\n",
    " - De posse da série temporal que representa a potência recebida **vtPrx**, passe um filtro média móvel com janela especificada no parâmetro **sPar.dW**;\n",
    " - A saída do filtro será o desvanecimento de larga escala estimado **vtDesLarga**. Ele é a perda de percurso somanda com o sombreamento;\n",
    " - Para cálcular a série temporal que representa o desvanecimento de pequena escala, é só subtrair o desvanecimento de larga escala estimado da potência recebida **vtPrx** - **vtDesLarga**; \n",
    "2. Usar interpolação linear em **vtPrx** para estimar a perda de percurso **vtPathLossEst**;\n",
    "3. Informar o expooente de perda de percurso estimado;\n",
    "4. Fazer um gráfico da perda de percurso original e estimada (comparação visual);\n",
    "5. De posse da perda de percurso e do desvanecimento de larga escala, calcular a série temporal que representa o sombreamento: **vtDesLarga** - **vtPathLossEst**;\n",
    "6. Fazer gráficos comparando cada série estimada com seu par original;\n",
    "7. Estimar a CDF normalizada do desvanecimento de pequena escala e comparar com a formulação teórica do m-Nakagami para alguns valores de $m$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Estimação dos parâmetros de larga escala (W = 100):\n",
      "   Expoente de perda de percurso estimado n = 4.0028\n",
      "   Desvio padrão do sombreamento estimado = 5.6611\n",
      "   Média do sombreamento estimado = 0.77029\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGkCAIAAACgjIjwAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA\nB3RJTUUH4wMcDhIgSG8sagAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJ\nbmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAyOC1NYXItMjAxOSAxMToxODozMjOxn8wAACAA\nSURBVHic7d15eBR1nsfxnyFNCBgYhiMSkXvJKDA8MWQAkXOTGGQUuUY5x1UEElg51V1F9GHZ1dFh\nZAYZDsUHMYjoKOCsMoAiVwKshDBDCCQgIhPRMUAezk7S6e79o6Smn+5Op7q7uupX3e/XX31UV32r\nuur36fpVddUtbrdbAABgtjizCwAAQAgCCQAgCQIJACAFAgkAIAUCCQAgBQIJACAFAgkAIAUCCQAg\nBQIJACAFAgkAIAUCCQAghXizC0AUqq2t3bx5sxAiIyOjS5cuQoiCgoKKioqEhISHHnrI7Op+FGxJ\n+s6ChAukQUbW7LsKISa4Abfb7XZPmzYtyUfr1q1DGNWFCxeUtevNN99UXhk1apQQIrSxRUiwJek7\nCxIuEE+7d++eOXPmzJkz7Xa7+qKRNfuuQogF7CHhR9XV1VevXvV6sba2VpeR9+3bVwiRlJSky9h0\nEWxJEs5C5Bw/fnzFihVCiJdffll9MaaWAExBIMHbyy+/nJ6erjxu1KiR8sDlch04cKCystJut8fH\nx3fq1CkjI8PzU9XV1X/5y19qamr69et36623eo1z+PDh6enpCQkJytO//e1vP/zwQ0JCwsCBA48e\nPVpWVtayZcvs7Gx1+Nra2k8//dThcNxzzz1t2rTZu3evEOLOO++8/fbb6yu7tLT0+PHjdXV1t912\n2+DBg+Pi/nl81HNyRUVF5eXlgwYN8iqpwYkGOwsNLrH6HD169MKFC8qY1VHt2rVLCNGpU6du3boJ\nIcrLy//617/W1dUlJibefvvt6enpnvPr5eTJk8eOHaurq+vQocOAAQM83/I7nqNHj5aXlysD7N69\nu0mTJi1btkxPT/ddYp6lKh16vXv3/tnPfqa8deLEidtuu23o0KEaF0jgVSjk5QkrMXsXDbKYMmWK\nskrs3LkzwLuqtLS077//Xnn37Nmz7du3V1632Wyvvfaa8ri+Ljv1aW5urjrC++67T3n3q6++6tSp\n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\nAAAASUVORK5CYII=\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGkCAIAAACgjIjwAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA\nB3RJTUUH4wMcDhIhP2gc/AAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJ\nbmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAyOC1NYXItMjAxOSAxMToxODozM0S2r1oAACAA\nSURBVHic7d15WBRXvjfwI9AguIUooGjEbSCJGh9UogY16BXE4SZGwXFDYxKjgk5cUHOTcXQewiRm\nHJcZr9GY6GMQjdskJncSJjIxbmAcRb0jII0kboiJqDyuDXTT/f5xYt1+e61equqcqu/n8Y/upuz+\n9amq861zqrq7hcViIQAAAEoLULoAAAAAQhBIAADACAQSAAAwAYEEAABMQCABAAATEEgAAMAEBBIA\nADABgQQAAExAIAEAABMQSAAAwAQEEgAAMCFI6QJAlIcPH5rN5pYtWwYFSbXKiouLa2pqQkJCXnrp\nJYleQrM8alv/rghOV6ucZTc1NX3++eeEkISEhB49ekj9cuCKBdj27rvvRkZGCusrPDx80qRJUrzQ\nuHHjCCEdOnSQ4slZcOjQoblz586dO9dgMMj80h61rX9XBPur1eF6kbPsmzdv0p3r448/luHlwAWM\nkJj23nvvvf3224SQwMDAsLCwpqam+vp6ejQHniovL9+wYQMhZOXKlTK/9KBBgwghbdq08fvCKuBw\nvWitEYBCIDFt+/bthJD4+Phjx46FhYURQioqKv72t79ZL1NRUVFeXm4ymTp27Pj8888HBPzfecGz\nZ8/evHkzJCRk2LBhdA6kX79+Tz75JP3T+fPnO3bsOGLECPvXLS0traqqsvnrv//97xs3btBnowsM\nHz68c+fOhJDKyspz586ZTKauXbsmJiZaP5XZbD5+/HhdXZ3BYAgKCurWrVtCQoIvFTp7Levyzp49\nq9frw8PDU1JShBeqqqqitw8dOtSyZcvw8PABAwa4bUOHnC3vrInGjBkzYMCAkJAQ4Rmampq+/vpr\no9H43HPPRUREHDlyhBDy1FNPOVzY9Vtz3cKuWbe/8GwHDx4khHTr1q1Xr16EkKqqqv/93/81mUyh\noaGdO3ceMGCAi/ZxsSU4fB5n68WmETzdTty2SUNDwz/+8Y/GxsbBgwe3bt3a5l340qTgE6WHaOBK\nu3btCCGDBw92OMt08+bN0aNHW6/Nrl27HjlyRFggLS2NENKhQ4cpU6YIy2zdunXhwoXC3bFjx9KF\nhUmSV199VfjrqFGjGhsbbRb47W9/S//6+eef3759m76KoF+/fleuXBFqmD59us0mFx8f/9NPP3lR\noevXEsrLysoSFhg9erT1C1kbNWqUmDb0qM0dNpHFbgLqhx9+6NatG11Ap9PR8QF5NGVkP1vl+q25\nbmHXc195eXmEkMDAQGF5YfxdVFRksVjmz59v8+RTpkxx+FSu146z53G2XmzK9mg7cdsmly5d6tKl\ni9D+a9eutW5/t/8dpINAYpqw++l0upEjRy5cuPDgwYPCX4WecdasWbm5ufRUU3h4uE13Twjp1q3b\njBkzwsPDCSEhISGhoaGZmZm9e/emfy0pKbE86gIIIXFxcfPnzx8+fDi9+4c//IE+m7AAISQpKWnk\nyJFffPEFfYlWrVqtWrUqPz+/a9euhJDevXsLRS5ZsmThwoU7d+7cs2fP8uXLdTodLdiLCl2/llBe\nZGTkjBkzfvWrX9G7tGNduXKlMB5KT0+fNGlSXl6emDa04Xp5h01ksetehUqmTJny29/+VpiYch1I\nzt6a6xZ2HUi1tbWBgYGEkLVr11ov361bN4vF8sMPP9AXysnJ2bNnT35+/vTp07Oyshw+lYu14+J5\nnK0Xh4Ekcjtx2yaDBw920f5u/ztIB4HEtNraWmF3FTz77LO3b98+f/48vTt9+nS68K5du+gjK1eu\npI8Iu/EPP/xgsViEw8n169dbLJZvvvmG3i0oKLBY9XrCUS294qhLly70rrDAnj176CNCDe+++y59\nRJhOtA7O5ubmc+fOFRYWfvXVV7QviI6O9rRCt68llFdeXm6xWEpKSqyfymKxCAORe/fu2dTvog2t\nuV3evomsm452r/ZP8uGHH1p3iC4Cydlbc9HCbq8OeOGFFwghAwYMsFgsd+7coZ0vTYXvv/+evtDG\njRtra2udPYPF3Zbg+nns14t92R5tya7b5MKFC3ThzMxMh+3vtklBOvgcEtM6dep06tSpY8eO5ebm\npqWl0c7iX//615o1ayoqKugyqamp9MbYsWPpjbKyMusnCQ8Pp9EiHEjSkAsNDaV3zWaz9cJPPPGE\n9WI1NTXWC7Rq1WrChAn0tlDD22+/3aJFixYtWqSnp9NHampq6I1NmzY99thjffv2HTNmTFpaGu2b\n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\nCQAofHU9uMXyJ15FQiAB8EEF3Q1IRx2HLJiyAwAAJiCQAACACQgkAABgAgIJAKRy//59k8nkxX9s\naGhoaGiQ+UX9/kLeVSJb/QxCIAGAr6qqqn7zm988/vjjMTExGRkZpaWl9PHo6Ojjx4978YSLFy9e\nvHixd8V079790KFD3v1f/76Qd5XIVj+DEEgA4BOTyfT888/37du3pqZGr9dnZmbS33FWyqeffhof\nH8/CC8lWiWrgsm8A8ElpaWldXd3vf/97evell16y/mtdXd2CBQtqamrGjBnz2muvEUIOHDiwY8eO\ne/fude3a9c033+zUqRNdsr6+/o9//OOlS5eee+454b8/fPhw1apV586dCw8PX7hw4dNPP00IOX78\neGVl5SuvvEIIef/99zt27Pjyyy8TQt5555309PSvv/66S5cu7du3J4S88cYbkydP3r17t3UBwgsN\nHz48IiKCEDJ58mSbN+Xwdd94442JEyfu3bv31q1b27dvF17I2RMKCzgsw0VTaBZGSADgk/j4+JYt\nWy5evPjf//63/V9zc3NHjhw5ffr0ZcuWHThwgBDy888/T5gwITs7OyIi4vnnnxeWzMjIuHXr1qxZ\nswgh+fn59MHx48dXVlbOmjWrX79+gwcP/vHHHwkhQUFBq1atIoSYTKb333//L3/5C739xz/+MTY2\ndvv27TU1NfS/b9u2LSsry6aAF198kb6Q2WyePXu2wx/8dPi627Ztmz17dmJiIs0b4YWcPaGwgMMy\nXDSFZmGEBMCxFjkHFXldy+qRwu3g4OCioqL/+q//WrduXXBw8OTJk1euXEkHCoSQ3NzcF198kRBy\n6NCh/fv3p6SkTJs2zWw2P3z4cPDgwTt27Dhx4sSgQYPOnj17/PjxoqKigICAlJQU2mWfPXv2yJEj\nt2/fbtmyZUpKypEjRzZt2vSnP/0pISHhypUr169fLy8vHz169JkzZ+rr6w8fPjxkyJCgINs+zaaA\n9u3bnzlz5ujRo4SQlJSUf/7zn/bvztnr0mcbP3689cKlpaVun9BhOxBCHDaFVytEJRBIAByzDgYF\nDRky5PDhw2azubi4eOnSpVlZWfv27aN/Cg8Ppzd69+79/fffE0J+97vfFRQUxMfHBwQE3Lp169at\nW4QQOt8VEPDLnM0TTzxBH0xMTGzZsiV9cNSoUd999x29nZqaeujQoYqKihEjRoSHh3/33XdHjhxJ\nSkqyr82mgKtXrw4fPlz4q8NZMhevKwStQMwTOmwHZ02hZQgkAPCPgICAYcOGvfXWW5mZmc6WKS0t\nLSgouHDhQnBwMCEkNjaWPh4cHHzlyhVhsaamppCQkODgYDpXRl2+fJn+L0JISkrK3//+95qami1b\ntnTo0KGwsPDkyZN07s61li1blpeXC3cbGhpCQkJslnHxut49oUPOmkLLcA4JAHxSXV19+PBh4e7B\ngwefeuopZws/fPiQEEJHQgcOHLhw4QJ9fNSoUbW1tfQa8bq6uq+//po+WF9fT0cn9fX1u3btSk9P\np8sPHz78n//855UrV3r16kWn+KqqqoYNG+a22pSUFJPJtHv3bkJIRUXFF198Yb+Mi9f17gk9agot\nwwgJAHxiNpsXLlxYVVU1dOjQ0tLSTp06FRQUOFt42LBh/fr1e/rpp2NiYlq1ajVy5C9TjsHBwfn5\n+WPGjElKSrpy5Qo9lRIcHLxr164pU6b06dOnrKxs6tSp9DQMIeTJJ58MCAigc2WtW7eOjo7u16+f\nMOPnQkBAwGefffbKK6+8/vrrw4cPT0lJCQsLs1nGxet694QeNYWWtbBYLErXIJW4uDh8QTKoA/sb\ns8lk+vnnn9u3by+cenGhvr4+JCTEvuM2mUy3bt2KioqyftBsNtfV1YWHh7uYN/PaiBEj5syZM3Hi\nRPs/efe6Lp7QIWdN4SmRWwjjGxJGSADgB0FBQZ07dxa5sHCG3/5JbNKIEBIQEGD/oC/WrVv34MGD\nrl27fvHFF3V1dWPHjnW4mPjXFfmEDjlrCm3CCAmAA9iYwTV1jJBwUQMAADABgQQAAExAIAEAABMQ\nSAAgFXX/HpLUL+1LI3AKgQQAvtLm7yERQnbv3n39+nWJXtqXRuAUAgkAfKLZ30MihMybN8/6e4Pw\nA0g+wueQAMAnqvw9JELIunXrSkpKdDpddnZ2YmIiIeTw4cMff/yxwWBo3779smXLCgsL7927t2bN\nmt27d7/66qtDhgyx/gEk+stJNTU1M2bMSE1Nfe+9986cOTNo0KA333yTPr/DdnDYCM7aQX2YDqQL\nFy4UFRVdvHgxLCxs7Nix/fv3t/5TQUGBwWBITk5OTk5WsEgABVVlRCvyurH7aoXbwu8hTZ8+/Zln\nnrFZMjc3Nzc3lxAye/bsJ554IiUlhf4IUMuWLU+cOPH8889XVVXRJTMyMrp27Tpr1qyysrL8/Pzp\n06cTQsaPHx8eHj5r1qyqqqrBgwefPXu2R48e9PeQXnnlFfp7SN26dXv55Zfp7yG99dZb27dv//Wv\nf/3kk08SQrZt23bkyBGbAl588cVevXrNmjWroqJi9uzZ06dPtw+kyZMnG43GOXPm3L17NyMj48sv\nv2zXrt1vfvObjz76KCwsrL6+/tatW88++2xwcHBiYmJ8fHzXrl0JIcJLb9u27dixY7m5uffu3Zs0\nadILL7yQkpIyYMCAxYsXR0dHT5s2jTz6MSSbdnDYCM7awf/rVXEWhg0cOHDx4sV79+595513nn76\n6c8++4w+XllZ2bdv3w0bNuzatWvo0KHbtm1z+N9jY2NlLBZAQoxvzCUlJcOHDw8MDAwNDX311Vdv\n3LhBH2/Tps0XX3xBby9cuDArK4vebm5uvnfv3r1795566qnvv//eYrGcOXMmNDS0ubmZLjB69Oi5\nc+fSBw0GA31wwoQJS5YsobdbtWpVW1tbVFQ0adKkuLi427dvf/7550lJSRaLpUOHDkVFRc4KOHXq\nVKtWrYTK09LS5s6da/N2zp8/Hxoa2tjYSO9u3LhxypQpRUVF/fr1u3fvnvWS1q9lfdf6dceNG/fm\nm2/S2+vXr58+fbqwvE07OGwEoXEctoNA5BbC+IbE9Ajp22+/bdu2Lb3drl27Dz74YNy4cYSQ1atX\nT5kyJTs7mxDSsWPH+fPnZ2ZmBgYGKlkrgIap7PeQKisrTSZT9+7d6d2mpqZhw4aNGjUqISGhQ4cO\niYmJaWlpb7zxhv2PATp83ZCQkN69e9Pb7dq1E06w2bdDU1OTfSO4bgeVYTqQhDQihERGRgrXUxYX\nF0+dOpXeHjZsWGNjY0lJiZhvngcA6ajp95A6d+588eJFm8c/+uijjRs3Hjx48Pe//319ff0777zj\n9uWccdgODhuBePj7TFzj4yo7o9GYn59PfznYYDCYTKaYmBj6p4CAgLCwsLt37zr8j3GPyFcrgMao\n7/eQUlJSmpqaPvvsM+v3+PPPPzc1NQUFBaWkpPznf/4nTY5OnTrRd+Qph+3gsBFct4MYcVa8KFVO\nTI+QBDk5OR06dKBzdBaLhRASGRkp/FWn0zU3Nzv8jyx/jSCAOqjv95CCgoK+/PLLqVOn5uXlRUdH\nHzt27E9/+lNcXFxaWtrw4cMNBsO1a9f+/ve/E0LefPPN119/PTMz88MPP3R4qZ5H7eCwEVy3gxjW\n3SDrmaT0SSz3cnJyJk6c+ODBA3q3qakpNjb25MmTwgL9+vU7cOCA/X9k/PQdgHjsb8xGo7GmpkY4\n8e7a7du3hT3a5kl++uknmwebm5t/+ukn4RID/0pKStq1a5ezv967d+/27dvWj9y+fdvmugZfOGwH\nh41gcdcOuKhBDkuXLq2urs7PzxeOYnQ6XXR0dG3tL1ed1tXVGQyGXr16KVcjAKjw95AIIa1bt7Z5\nxL8/X+Tw2Rw2ApGgHRjEdCAtW7bs3Llz+fn5oaGhRqOREKLT6Qgh48aN27Jly+jRo0NCQjZt2hQf\nHy9cDwMA4NqCBQvoDfp5IGAH04G0d+9eQsjQoUPpXZ1OV1ZWRgjJysrS6/UJCQlt2rRp27bt5s2b\nlawSAAD8gelAcnZJgk6n27Bhg8zFAACApJgOJAAQsH59FIDPEEgAHMAHGDSrKiPa+psDnWmRc1CG\nYqTGxwdjAQBA9RBIAADABAQSAAAwAYEEAABMQCABAAATEEgAAMAEBBIAADABgQQAwD39Zac/isgR\nBBIAADABgQQAAExAIAEAABMQSAAAwAQEEgAAMAGBBAAATEAgAQAAExBIAADABAQSAAAwAYEEAABM\nQCABAAATEEgAAIyqyohWugRZIZAAAIAJCCQAAGACAglAMS1yDipdAgBDEEgAAMAEBBIAADABgQQA\nAExAIAEAABMQSAAAwAQEEgAAMAGBBAAATAhSugBXzGbz6dOna2pqmpub09PThcdPnTp16dIl4e7A\ngQO7desmf3kAAOBHTAfS8uXLCwsLe/bsWVFRYR1I+/fvP3HiRHx8PL3bo0cPBBIAAO+YDqQVK1bk\n5eUdPnx47ty5Nn8aNGhQXl6eIlUBAIAUmD6HpNPpnP2psbHx6NGj5eXlctYDisD36wBoBNMjJBeK\nioquXbtWVlYWFRW1efPm7t27O1wsLi6O3tDr9TJWB37WIuegZfVIpasA4JLQDbKPy0CaP38+na8z\nGo0LFiyYN2/eV1995XBJ5BAAaJx1N8h4ODE9ZedMREQEvaHT6bKzs6urqw0Gg7IlAXhBfzlT6RIA\nGMJlIFlramoihAQFcTnUAy3DuTE/QmOqA9OBZDabjUajyWQihBiNRqPRSB8vKSmhN+rr69evX9+3\nb18Xlz8AaBl6auAI0wOLwsLCRYsW0dt9+vQhhJSVlel0uiVLlty5cyc0NPT+/fv9+/ffsGGDomUC\nADiG63E8wnQgpaWlpaWl2T9eXFwsfzEAACAppqfsAABAOxBIAMrAJXYANhBIAADABAQSAAAwgemL\nGgDI/01t1SpcBwBIDCMkEAufaAFOYdPlBQIJAEAquHTFIwgkAABgAgIJQM1whA4cQSABKCYupqAq\nI1rpKgBYgUACAAAmIJAAFIOv3QSwhkACDyh4+SymtsAFnCpTBwQScCAupkDpEjjGVJbjI0HgAgIJ\nANRPrUGosveFQAIAV1TW5QHLEEjAAZz8B9ACBBIAADABgQQAKodr8HiBQAIA+UiRDUxdRgi+QCAB\n06oyonHNN/hOy4Mkji5LQSABACgDYzsbCCQQS8vHmAAgAwQSeACZpBq+T+O4fQYZZoo4mowCMRBI\nAADABAQSiILJbgCQGgIJxIrdV6t0CQCgZggkAD/DiQ2loOV5h0AC+aC/AAAXEEjAOnyzKoAzKrvw\nFYEE4H+MjAWVvRRFZX0lyACBBKBm+OIl4EiQ0gW4YjabT58+XVNT09zcnJ6ebv2nCxcuFBQUGAyG\n5OTk5ORkpSoEsPdoZICLEm3hwwPgGtMjpOXLl8+ePXvnzp0rVqywflyv16enp0dFRQ0YMCA3N/eT\nTz5RqkIA1WN85o2R2VGWMb4GrTEdSCtWrCgtLZ07d67N46tXr54yZUp2dvbEiRPz8vLWrl3b3Nys\nSIVaExdTgINcvuCSEOAI04Gk0+kcPl5cXDxkyBB6e9iwYY2NjSUlJTLWBQpAFvqX70fNihx3Yzyk\nbkwHkkMGg8FkMsXExNC7AQEBYWFhd+/edbhw3CMyFgiOtcg5aFk9Eh2KmvjrEAFbhdR46QmZvqjB\nIYvFQgiJjIwUHtHpdM6m7PR6vUxlgQhVGdF6QnC2H/xFfznT+jJC/eVM7rauqoxoGb6US+gJGc8k\n/kZIdB6voqJCeKShoSE0NFS5ikAUjs6sAvswqFIlLgMpOjq6tvaXY4q6ujqDwdCrVy9lq9IIBc+Q\n4+S833F3Tg4hpHpMB5LZbDYajSaTiRBiNBqNRiN9fNy4cVu2bGlsbCSEbNq0KT4+vnv37koWqnb+\n6rnwfeHgI/txNkbeasL0OaTCwsJFixbR23369CGElJWV6XS6rKwsvV6fkJDQpk2btm3bbt68WdEy\nNSEupsCidA0AoG5MB1JaWlpaWpr94zqdbsOGDfLXAwAKwmBI9ZiesgPgF3dnaOShwc+TOXu/VRnR\n+KZBGwgkAP9DR+MRDH2AQiCBrDR4gOwW+xePeb3KsK6Vwv5G5RACCcCf6DyM+IvUY/fVYnzgBTQa\np5HjGgIJAEAZ+HSdDQQSyAp7IIBHNDXLjUAC8DOErgueNk5VRrR2umNAIIEoPnayuMIVANxCIAGA\nkjAAAgECCQAAmIBAAgXgoBgA7CGQQG44maRiHB1qqPJzPAJOP6eFQAKQCrO9U2FIWgAAHHpJREFU\nM7OFgT1NXbSJQAJ24do86fi9YfkKOXmGR+oehEkBgQQy0dSBHmF+ZlKK1UEzSalkYjAROZ03UxAC\nCTyj4OfGNfWRdVAH/EqyRxBIIDetDZW0id/pVl4OehwOv3ifJEQgAQBneMkM8BQCCQCcYnCgw/sg\nAFxAIAE3+Jrrk7RaLQ8RfLlSAGHGOAQSgEz81Rv6MY20HGwOqbVBeEliBBK4weCkDfiFFKtV6ovK\nNHvRmsikdDZ85OUCdAQSeIaveTPW8HKg6h3G08K68fWXM/WXM1vkHFT3GuEOAgmYhvzjl+/rDqNz\nrUEggQLsP+Kq1rl7FeD3mMB+9CPpzJUvgy0M1CgEEigPaQQqwMt5GpYhkIAViCWZ8Tv08Y5sgYHh\njtcQSMAEnCoAh7SWmhqHQALJ2Q990Mt4DeNIUDEEkrSqMqIxficYAAGACEFKF6AqDo9e9ZczCWH6\n8xnKoo1mWT2yKkPpUjgRF1OA8+e8a5FzUK90DQzCCMmfhA8GCgMC+gjvgySpZ9g0Mn6yThGbT9ho\nYSJOC+9RPBxSOMTlCOnUqVOXLl0S7g4cOLBbt26KVWOlRc5BElNAfunBa7EHuqWyJnJ72OtwuOzp\niIff0WRcTIFF6RqAZVwG0v79+0+cOBEfH0/v9ujRQ/FAEsZA1oMJYcCEWTuHaBrFxRTgGgcFVWVE\ny/aVP35c0XExBXp3RzP6y5lVGax/oRGFLoLiMpAIIYMGDcrLy1O6il/QNHK2s8Xuw1BJKzAP4zU5\nc1GbuGhhXs8hNTY2Hj16tLy8XOlCCCHEsnokjvFds28ftZ438mKfl2HjcXZIxMhaYKQM3qngwJfX\nQCoqKtq4cePkyZOTk5MvXrzobLG4R+SszSEVbCvgBa/Xu+sLYey/DND1wt7VACrDQk/oGpeBNH/+\n/LNnz+7cubO0tDQ2NnbevHnOltQ/Imd59tAjOBS7r9bTE0guOmIGL2X0+3r3+2GNxkf29EcoiA8b\nj/AfPVo18hyeOvhuWaV7Qre4DKSIiAh6Q6fTZWdnV1dXGwwGZUsCVVJ2XMtgxLKATopqPEop9c27\ncBlI1pqamgghQUFMX52Bncchmw7Xo2kozRI/6lLxjwkx/r5wbYvXuAykkpISeqO+vn79+vV9+/bV\n6XTKlgSeoiHNflRXZUTTf0oX8v/xb7thKMYC1rYxRXAZSEuWLOnTp09CQsJzzz3X2Ni4YcMGpSvS\nFgxlRJIibr14Trf/BUf0XvOi6bDvuMBlIBUXF5eVlZ08efL8+fM7duyIiopSuiJRsCH6zlnfKsUx\nvgrWF/sDUIe8aHnpJvHEbFoSDTF9nHTl8TiDy0DiEeOz3orwb3epv5wpRb8Qu69WkS8kFC4Akxr7\nH5akrFOK06AFtxBIoAa07/Z7D47DCN/5caAp3erQX85U6lJs13yMXu5G+QgkAAeEH8VQuhBGiezp\nREYI2hkoBBIAeEPS4aPDwFMkt3g8E8MvBJJMOD0GlHPI72MT+f1ciNTzdZxuEmzy7/eI+77ZO3sG\nxJtrCCRwA+dRKB+7Eu5m8z2i1g/hKrjWXJ9tUutHxxBIKiHnBqr4ob2LbsL+T170KfYnkPwy/NJg\nl634puIF2WpW5fbgIwSSrNR9mOxffvnFBK8bnMHOQvGNx/6gh8FWUgQm4vwFgSQfqfdeNkfxvnSj\nnraYs+UV78r9BQGgAnQlSroq2ewKxEAggeSk7kZd5w06cXnwODsHrEEggRq4TR11DJLQ6asJ1qY9\nBBKogYvvDvdut2fke1G9JkMAW1aPRJcqHW2el0IgyQd7r1940Yx0/CR1H63WS5+t8Xtygh1+6QfU\nGlcIJHDD9/1HqSQWEkKthwLOIlbZ+Un8OgnlOryl2yarMqL5jSsEkhq0yDmo1j7XX9Q3dnH7jnj5\nGm85ISwZh0CSm6T7A2ZUnEFgA8FmwDwEkqykO07nepwu4P0A1pf+ztM37vq1MDwSSHduz+/bKtcb\nv18gkNRABVHkkHf9O4+/5MbFjKLIzYyXNgcGIZBUgh4RqzWZ7Pnli4XAU9rZwEARCCT10M4sjfy/\nxCM1BkcVip+PxPyVBiGQZMVgvwP2MMxSEM0h71YB7+cgiZMY9tcGyX7jIJCAP2Jynf19zyMqezuu\n4YBAsxBIwDeba6iss8q+X+OlW5f0MFmDJJ2Z4GWj4gICSW0Un/r3haQdh/gOnYWZVftqWahKNoy/\nWYSQRBBI3LNJINmug2J/n2ShU1PBWQ35sbDiJF1rNkcbXB9E+hcCSW5+76H0lzOF6+tku9COqekj\nkf0XC92ceF5X65etS+ouUorunqltkuASea8gkEBCKhsc8PJ2fO+a9ZczpetPvfghYAZbnsGSVACB\nBNJi7bjVaxy9Eb7GgiBei5yD6p7fQyDJDZ2FpmB1y8m+tTk6jHDNxTBRTWM1BBLwysW3B0mxiyJa\nwF982ZbUfWoKgaRC6h7UU5x+TxKbp0MAGBGkdAFeunDhQkFBgcFgSE5OTk5OVroctugvZxLCZX/t\nKfqpWIvSZQD4Qt2DHo9wOULS6/Xp6elRUVEDBgzIzc395JNPlK5IMfaH25wOHfxOBe2A4RRQwhSf\nL9EVF1PA/hk1LgNp9erVU6ZMyc7OnjhxYl5e3tq1a5ubm5UuSjGS/uifsz+JnwSX/9SLZfVI9nc8\n1qg1+aTY/KRuK4dT7ho5hcllIBUXFw8ZMoTeHjZsWGNjY0lJibIlqRXLPTvLtfEFLekpSVtMyzN4\n/AWSwWAwmUwxMTH0bkBAQFhY2N27d5WtylN+PMjSyKGTM/59+9L93LWWKXuVjV8mb4UdVur3ooKp\nZl/wF0gWi4UQEhkZKTyi0+mcTdnFPSJTceLIsM2pdQbGhrPwUEdIu30XvJxksjnkV8fawYGLFPgL\nJJ1ORwipqKgQHmloaAgNDXW4sP4RmYpjA3YVYIezwy/xUcpUgAnhylRVYnBRMJeBFB0dXVv7y1Ze\nV1dnMBh69eqlbFVM8eOWp8hGrOxRP4P7rfgG4WLARHg7ZrKfpqMbCTvTa7ysd7f4CyRCyLhx47Zs\n2dLY2EgI2bRpU3x8fPfu3ZUuCvyDr65KILJH8DrtxDcLXw3Ick/qaW0uZlBlOIvG13p3hstAysrK\n6tKlS0JCQmJiYklJyapVq5SuSBks78w+EnNxAWtDGXX0CPLzpd2c/Viwa+J3HPr8Wr7sTWZcflOD\nTqfbsGGD0lUwAd9TAAKvD1Asq0dWZfi3FtbFxRR4GjMtcg5KfQyE3ZnLERKIwen4ibVxj5w8XWXW\nbcX46ub0enrrFvZlnCTy/2p546cQSIqR8zeS1UpNO7DrVcbyV2MA+AsCSRnsXJ8DMuD9+9cl/cAT\nFwmKHVYeCCS+sbwzMz6JBG5pPIQ8JfObcj2k5nSOBIGkTozs8JzuFd5x0eb6y5luD7EZWWUC+3Xn\n4yiBqTfIVDH2NHswh0ACAEZp6oDGvxhPXGcQSGqm2eMs76C5rHHao/mLyCxEZPoXAkm1sKs45Dp1\n1Npo1lcl8HIFNhdFgn8hkHiFw3kvqLuPi91Xi4vB/ELd2wnLEEgcU3a34eW3D8B3Pk7fSbehSjev\nqMoZS/bfFAJJSSx/PMUvYcP+DqARHq0IHGfw+zFk3sd2CCTFxO6rZfxLG5XauHnfqVTAv6tAZK+N\nIPSF0Mhc7z4IJNVi7djNI0rtVFI0GoMdBNfbBrjF4CYnEgKJY+ruVhh8d8yeNmN57pdy20XaL2BZ\nPZLBbQAkhUACYEhVRrQXl2VLN/crVCL1QTeyx1O0xRwGuRLl+AcCSWFSH3GzeUSvNfxOoQDICYGk\nJKn7KfSD/iX1safwKSIvXsi/n0BS6iib8eMnOcvzbuelK47fQRICCUBa/PYOYI3rwzteikcgwS/o\n2Qulq5AWsoEpfG1v2HhkgEBSktebuMg92YvnFx9L2D9BPPutxfdjdvoMcTEFvBz+g1sIJF5JuhPS\nTFIqchB1HPH7pfBIF0qbewECCf4PvpqTQXzNa/lOwY5YlU3N15tCICmPhSu/hWWEb4zGgSo7VLku\nWBsBqPiLsjjafhBICvN6WxG5P4t//riYAuED/74PlXj50R3wEWu54kcON2AWtmpPD2E5WkdBShcA\nyrM+Y8T+l9CoW1xMATtfuctC5ysby+qRVRkkLqbA4m5JMcuAdzBCUhgjBy9C16PZLxBjZEhnWT2S\nhTJkw92bdbh3cPcumIVAYgJrJx41G0sSka4xpf6+V2wG7NBC7CGQlKfW7Qx9me/otuGiJZ19wybI\nDKvALxBIrBB/nOvREbHIVJD6I7qgNSI7aBy1gDUEkvK8OG3AyOEYI2UAsEy63SR2X63KEh1X2QGL\nVLabecSL9y7+N8JZ/uzzL/OTitZg3ZJa3giVghGSJmBiTQx1d0B+OU4XeQ2FyNfidISt7u1EWbyO\nkE6dOnXp0iXh7sCBA7t166ZYNbLzaJdg6qMtqqRs3qvpYzGc9vWW1SO9/gAf/fyTf5fkF6+BtH//\n/hMnTsTHx9O7PXr04DqQtLCpqZt0U2Ey542zcJUhKjhNI/AjXgOJEDJo0KC8vDylq+AeZvPkRz+E\nKyZmfDn0tn8q3w96GDxy8mMTgeI4PofU2Nh49OjR8vJypQvhHqdT+SARbA+gFI4DqaioaOPGjZMn\nT05OTr548aLS5fiBR1/LLZ7bmRBMlYA1YXvAhuEXaEbx+Agks9lsfIQ+Mn/+/LNnz+7cubO0tDQ2\nNnbevHkO/2PcIzIW6yXxJyFwAAt+J/VXEDnkY0+tso5euv06Li4u9u9ZXPSEfATSgQMH4h+hmRQR\nEUH/pNPpsrOzq6urDQaD/X/UPyJruZrhrEfAeSnQGnnS0bvQ0lvxe0n+xcdFDampqampqc7+2tTU\nRAgJCuLjvWiEmq5FZpzKBgq+a5FzUB1t4ulOpIKdjo8Rkr2SkhJ6o76+fv369X379tXpdMqW5Bcy\njy0wlPGUIlNbslHxW/MLzJZLjddRxZIlS+7cuRMaGnr//v3+/ftv2LBB6Yp4pYKjKvAjf20Pco5R\n1DEeEkndn3PnNZCKi4uVLsH/YvfVijlE9W73k/l7zDTVRwBT9JczCWH3K/tkw2N08Tplp2IuMsnr\nGRVMNVjT8sSUiy9iwEYCikMgscVtp+DdKMftL7z5gq/+Hd2uaxjaskz1aweBxBYXGxy+H0WbZOuD\nMEgCxSGQuMHmdLDWujCuD1Hdriyu3x1rxO8aWtuJXEAgsch+EowOj1j+dTXQDvvtUx1dqrLvAkcD\nBIHEIId7BZvDI4K9SKtc991SbBUsZB62dqkhkJhDN3rrg1CJhkd8XYwAvkN/KifxrY31IkAgsYsG\nRlVGtL+GR2qdaeEL2hzAGQQSo+h4SIgQ34dH6AeBaOA0pOq3c3UPpxBILLLZqfzSiTjcjtW9cYND\nnGYStlUtQCAxqkXOwdh9tXExBao/4pMZ+jW/YLwZ5Tw/KsUeqtm9HoHEIuu9nfE9n7Le/6syojW7\nOwELeN/8eK/fFwgkdvHy1Qxa3n+8xsVxhkisbQBqaltnWGtzf0EgMU0LuxYL5JzhUeU65fRN2XTr\nUr8LfNDCLQQSuyTdPTCxZgOtoTWKrHFnL+rwcfE9AP3vnB4WWEMgMUqiz7pLcYxmX6oKdgzxEO0A\n/oJAAvAYL6f3QK1sjvlUcwiIQNIQtW7EMovdV8vsVwuCs61a8Qk6jyYnNLtvIpAACPGtC9Ba98Hp\nFCULZcu5qfC4WSKQAABUi4UYFg+BpDm49hR8wVcHB3xBIGkRMglAwNp1kp5OtTFVvI8QSNqipm2X\nX7yvBflPTnjRYkoddcl/BSaP54qcQSBplN/7RG2OurT5rnnhl42c66OH2H21fMUVAgn8gOud1jtC\nFGnwvdvgq8uTGj4S4AsEkubQn7RAJ+ILhBAI/LIrYX+kEEjaItF2r+XdScvvHZzBIYt3EEjgTzin\nonoqCGCp00Lq5+f0N3/FQCCBn2nh2FAFnbJmaWH75BcCCQAAmIBAAj/TzugB85OqoZ2NlnEIJADv\nYf4HwI+ClC7AFbPZfPr06Zqamubm5vT0dOs/XbhwoaCgwGAwJCcnJycnK1UhAAD4C9OBtHz58sLC\nwp49e1ZUVFgHkl6vnzBhwpw5c9q3b5+bm1tbW/vyyy8rWCdfpJudwBQWqI9l9cgWOQUWpcvQCKan\n7FasWFFaWjp37lybx1evXj1lypTs7OyJEyfm5eWtXbu2ublZkQpBoLXJK/p+ce4B7AlbBTYPTzEd\nSDqdzuHjxcXFQ4YMobeHDRvW2NhYUlIiY10AwD2kBYOYDiSHDAaDyWSKiYmhdwMCAsLCwu7evats\nVaDB3Vtrg0LuiNkmsRKZwtA5JLPZLMy8ORsbEUIsFgshJDIyUnhEp9M5m7KLi4ujN/R6vd8KBQAO\nyXPMxODXKAjdIPsYGiEdOHAg/hGj0ehsMZpVFRUVwiMNDQ2hoaEOF9Y/4vdqwR5HB5u4/gKIjMN6\nZXcNvRUFyxCDoRFSampqamqq28V0Ol10dHRt7S+HIXV1dQaDoVevXhJXB6LExXBwPVJcTAF+I4Av\nvieHBqeUecTQCMme2Ww2Go0mk4kQYjQahWHTuHHjtmzZ0tjYSAjZtGlTfHx89+7dlSwUeObdaAkd\nHKew4ljG0AjJXmFh4aJFi+jtPn36EELKysp0Ol1WVpZer09ISGjTpk3btm03b96saJnAPe8Gduja\nAPyL6UBKS0tLS0uzf1yn023YsEH+egAAvIOJYjGYnrIDAFANjq76UQoCCQC0BXOtzEIgAQBICxEo\nEtPnkIAvvOx1ltUjqzKULgJUjZd9gTUYIQGg+9A0nNphB0ZIAKA24i9pk+1YBAc9YmCEBCA39E1q\nhcGWjxBIAADABAQSAKgNxqCcQiABALiCeJMNAgkAAJiAQAIAACYgkAAAgAkIJAAAYAICCTQKv2IO\nfofLH3yEQAItwgcYARiEQAIAACYgkAAAgAkIJAAAYAICCQAAmIBAAi3C1VAADEIgAQAAExBIoGn4\nNBIAOxBIoHX4TBIAIxBIoF0YHgEwBYEEGhW7r1bpEgDg/4NAAgAAJiCQAECFcGqQRwgkAABgAgIJ\nAACYgEACAAAmIJAAAIAJQUoX4IrZbD59+nRNTU1zc3N6errw+KlTpy5duiTcHThwYLdu3eQvD3gX\nu6+2KiMa32sHwAimR0jLly+fPXv2zp07V6xYYf34/v37P/zww389cvv2baUqlEhcXJzSJXiJu8qF\na7G4q1yAymXGadlcYHqEtGLFiry8vMOHD8+dO9fmT4MGDcrLy1OkKgAAkALTIySdTufsT42NjUeP\nHi0vL5ezHgAAkA7TIyQXioqKrl27VlZWFhUVtXnz5u7duytdEXAJJ5AA2NHCYrEoXcMvzGZzc3Mz\nvW09NqJTdmVlZcIjdXV1ERERhBCj0bhgwYJLly599dVX9k+IqV4AABt6vV7pEpxiaIR04MCBxYsX\n09tnzpxxMV9H04gQotPpsrOzx48fbzAYQkNDbRZjud0BAMAGQ4GUmpqamprq6f9qamoihAQFMfRG\nAADAC0xf1GA2m41Go8lkIoQYjUaj0UgfLykpoTfq6+vXr1/ft29fF8MpAADgAkPnkOx99dVXixYt\nsn6krKxMp9MlJibeuXMnNDT0/v37/fv3X7NmTVRUlFJFAgCAXzAdSAAAoB1MT9kBAIB2IJAAAIAJ\narg47cKFCwUFBQaDITk5OTk52eEyzc3Ne/bsOXPmTHBw8IgRI/7jP/5D5iIdElP5d99998033zQ3\nN/fp02fSpEkhISEyFymGs6/BZY2YOi9cuFBUVHTx4sWwsLCxY8f2799f5iId8qiFT58+/eOPPz7/\n/PPCByQUJLJyBvdQkZVzsYeyuVXb4/4ckl6vnzBhwpw5c9q3b//f//3fM2fOfPnll22WMRqN06ZN\nM5lML730ksFgKCsr+8tf/qJItdbEVP7hhx9u27Zt7ty5bdu23bJlS5s2bQoKWPxh5mXLlhUWFvbs\n2bOiosL6I8ysEVNnQkJCUlLSoEGDKisrP/3007y8vHHjxslcpz3xLVxXVzdp0qSampodO3YMHDhQ\ntgqdEVM5m3uomMp52UPZ3KodsHDu9ddff++99+jtQ4cO9evXz2Qy2SyzYcOGcePGNTc3y16dK2Iq\nHzFiREFBAb1dXV0dGxv74MEDWasUp6mpyWKxHDp0qHfv3krX4oqYOu/cuSPc/utf/zpq1Cg5KnNH\nfAu//vrrn3/+eWxs7MmTJ2UpzQ0xlbO5h4qpnJc9lM2t2h7355CKi4uHDBlCbw8bNqyxsVH4lJLg\nb3/727Rp0+rq6o4ePVpfXy97jY6JqbxTp04PHz6ktxsaGoKCgticEODlc2Bi6mzbtq1wOzIykn4M\nTnEiW/jLL78khKSlpUlcjgfEVM7mHiqmcl72UDa3ant8n0MyGAwmkykmJobeDQgICAsLu3v3rvUy\nzc3NNTU1Bw4cWLt2bY8ePU6ePLlw4cKZM2cqUe//EVM5IeQPf/jDW2+99cMPP+h0unPnzq1cuTIw\nMFD2YjXKaDTm5+ePHz9e6ULEunXr1rp16z799FOlC/EMm3uoSNztoYxv1XwHksViIYRERkYKj+h0\nOuEbWimz2UwIuX79+rfffqvT6U6dOjV16tQRI0b07NlT5mqtiamcEPLTTz/duXOHENKqVauGhoba\n2lo5i9S4nJycDh06ZGdnK12IWLm5ua+99lpUVJTwnSZcYHMPFYm7PZTxrZrvQKJj6oqKCuHkbUND\ng823rAYGBgYEBGRkZNCFBw4c2LZt2/LycmU3dzGVm83m+fPnL1++/KWXXiKEvPbaa8OHDx86dGjv\n3r3lL1hrFi9efOPGja1btzJ+wCs4ceLEqVOnxo8ff/jwYTohc+bMmXbt2v3qV79SujQ32NxDxeBu\nD2V/q+Y+kKKjo4Wjkrq6OoPB0KtXL+tlAgICevXqZT34oEdkyhJTeWNj44MHDzp16kTvRkREhISE\nXL16ldnNXTWWLl1aXV2dn58fFhamdC1iBQYG9u7de8eOHeTR+Pvbb78NCwtjP5DY3EPF4GsP5WKr\n5v6ihnHjxm3ZsqWxsZEQsmnTpvj4ePpjfbt37/7kk0+EZfbs2UPPPX733XcPHz6Mj49XsGahKteV\nh4aGRkVFHThwgC5/+PBhg8HAZv/i7GtwWeOsTuutZdmyZefOnfvoo49CQ0PZeS9uKx84cODmRz74\n4ANCyOLFi6dOnapgzZSYNmdzD3VbOUd7KJtbtT2+R0iEkKysLL1en5CQ0KZNm7Zt227evJk+Xlpa\n+uDBA/rJnldffbWqqmrw4MGPPfbY/fv3//znPz/xxBOKVk2IuMrXrVuXk5Pz+eefP/bYYzdv3ly+\nfDmb8xiFhYXC1+D26dOHPPoaXEWLcsBZndZtvnfvXkLI0KFD6WI6nY6FT1aJqZxNYipncw8VUzkv\neyibW7U97j8YS929e/fOnTuuN2Kj0Xjp0qWePXsGBDA0LhRTeV1d3d27d7t3785U5QD+xeYeKgb2\nUH9RSSABAADvkOcAAMAEBBIAADABgQQAAExAIAEAABMQSAAAwAQEEgAAMAGBBAAATEAgAQAAExBI\nAADABAQSAAAwAYEEAABMQCABAAATEEgAAMAEBBIAADABgQQAAExAIAEAABMQSAAAwAQEEgAAMAGB\nBAAATEAgAQAAExBIAADABAQSAAAwAYEEAABMQCABAAATEEgAAMAEBBIAADDh/wGTVpntcz0EsAAA\nAABJRU5ErkJggg==\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n/fdnZWUdP35c/unFF19s1KhRo0aNtK7UuXPnHK/brFmzMWPGyOX8/Hy5oH1moP1/p1m5cuXtt9/e\nrVu3oUOHDhs2TL7+neZWeLg3bYMai3QUGRnZrl07uSz/4T137lxlZaWHe3O8v441TJw4UVvZpEkT\nV7deldMOk5OTExIShBBTp06NiYlp2rRpamrq3r17tRtKTU2VC8OHD5cLeXl5VXfr4fZOt+5E+8hE\newj69u3ryZ0KDw+/++67hRDdunWTa+QzyvNHv1pTpkwRQuTk5Bw/fnzr1q1WqzU4OHjy5MnC9XGr\nuhP3D7Tn+3EvMjJS/rujDYnkky00NFRerKyslAtujol3X1DwEJMadCZ7EZGRkd26dZNvprm5ufJP\nAwYMkA0NjdNF7QUmhNA+QNZebE4vjPz8fPnRwoABA6ZNm2Yymf7nf/5H+5/USY170zaosUhHFRUV\n1d6Wh3tzvL+ONcg4r6q8vFwu3Lx5s9oNqu7wyy+/XLt2bXZ29vHjx48dO/bZZ5/t27fvnXfecapf\nu8XGjat5BWmFud/e6dadaFteuXJFLhQXF7vZXuM4J0JTq0e/WqmpqW3btj137ty7774rx16/+tWv\noqOjhevjdvnyZaf/D9w/0J7vxz3ZXXTUuXPnqpu5PybefUHBU3oP0QJU1UkNGm1MMGPGDMf1//d/\n/2ez2eRy1e7KDz/8IK81YMAAuSY9PV2ukR0GrTciP66wWCzyA/Pw8PCq5dW4N0+KdKR1k2T7/vLl\ny/JjlW7dunmyt2q7SdoHG927d9e+myJbgkOHDhVCNGvWTK7XZlJUndTguEObzebYDtL6bFu3bpUL\ngwYNkn9644035Jq333676p0tKipyv72r5pjj+qtXr8p7l5iYKKuaMGGC40NQdT9OF7U30OnTp3vy\n6Nf4nZ4FCxYIIWJiYuSuduzY4f64VW3eun+g3e9nxYoV8qLZbHZVszapQV5cs2aNvMrFixftdruc\no6g9DdwfE+++oOAhRkjKadOmzdSpU1esWLF8+fKCgoL4+Pjr16/n5uYeOXKkvLzc1b+K0dHRY8aM\n2bp1665du3r06NGyZct9+/Y5bqD9k/j888///e9/P3DgwPfff++qhhr3Vrcig4ODU1JSBg8enJub\ne+HCBSHEM888U+e9tW7d+plnnnnjjTf++c9/JiQk9OzZ89q1azk5OT/++GPXrl137Nhx/fr1u+66\n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\n5dKlS8eNGzdt2jQhxB133DFz5swJEyYEBwfrUSAA+II2VEqIzWg0J8svM0n1z5DKy8v37t179OhR\nx5X79+/v3bu3XO7Xr195eXl2drYe1QGA7/j9r/ypPkLauXPn999/n5eXFx0dvWrVqri4OIvFUlFR\nERsbKzcICgoKCwsrLS2t9uoJCQlywWw2+6hiAGgwju07D4dK2tug+hrZ7Xa9a/iXyspKm80ml00m\nkxCiuLi4VatWQgir1Tpr1qzTp09/8sknN27cSExMzM3NDQsLkxv36tXrxRdffOihh5x2mJCQQA4B\n8EsFo2PkQkJsLWY6KP6uqFDLLjMzM/EWq9UqhJBpJIQwmUzTpk07ceKExWKRWZWfn69dsaysLDQ0\nVJeaAUAXfvlFJYUCKTU1Ne8WmTqObt68KYRo3LixyWSKiYkpKiqS64uLiy0WS8eOHX1dLgDozc++\nqKRQIFWlTVUoKSlZvnx5t27dZFCNGDFi7dq15eXlQoiVK1cmJibGxcXpWSgA6MSfzjOk9KSGefPm\nXblyJTQ09Nq1a/fcc89bb70l10+dOtVsNicnJ4eHh0dERKxatUrfOgFAR37zRSWFJjV4neIf3wGA\nd8mZDgmxLjNJ8XdFpVt2AADPGb19RyABgP8w9Ow7AgkA/I1BZ98RSADgh4zYvlN6lh0AoM6qzr7r\nrHdJ7jFCAgB/pg2V1J8LTiABgJ+TmaQ+AgkA/J8hMolAAgAogUACACiBQAIAKIFAAgAogUACACiB\nQAIAKIFAAgAogUACACiBQAIAKIFAAgAogUACACiBQAIAKIFAAgAogUACACiBQAIAKIFAAgAogUAC\nACiBQAIAKIFAAgAogUACACiBQAIAKIFAAgAogUACACiBQAIAKIFAAgAogUACACiBQAIAKIFAAgAo\ngUACACiBQAIAKIFAAgAogUACACiBQAIAKIFAAgAogUACACiBQAIAKIFAAgAogUACACihsd4F1MBm\ns23ZsiU3N7dJkyYDBw785S9/KdcXFhZmZGRYLJaUlJSUlBR9iwQA1J/SIySr1Tp+/PgPPvjgZz/7\nWWxs7Pbt2+V6s9k8atSo6OjopKSk9PT09evX61un1yUkJOhdQh1Rue9RuY8ZtGxDUHqEtHr16ps3\nb77//vtBQf8RnEuXLh03bty0adOEEHfcccfMmTMnTJgQHBysU5kAAC9QeoT0wQcfTJw4sbi4eO/e\n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\nAxTLDZ1D6gtYAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nQnJzczdt2nTr1q3WrVvPnTu3efPm9Mjjxo37/PPPr169+vDDD0+e/OfP3ebG9lifq7q6esmSJadP\nnw4LC5sxY0bnzp35n+Lq1asTJ05MSUl58803CwsLe/XqNXfuXHoous2mTZv++OOPkSNHTpgwwebp\nCgoK1Gp1ZmZm3759V69efevWrWXLln3++eeTJk3q06ePzbMDeAYCSWThB7K5QKoYMJmfSeBJv//+\ne8OGDQkh69evz8vLW7hwYXBwcLt27W7duvXiiy+uWbNm2bJl+/fvf+ONNyx2HDdu3K1bt1544QWV\nSlVYWMgdbezYsY0aNTp69OiAAQNKSkrokQ8ePJiVlUUIef7551u1ajV06FB7G9tk81yjRo0KCwt7\n7rnnSkpKevfuffLkyXbt2q1fv/7HH3/Mysq6devWU0899dhjjw0dOjQhIWHWrFkxMTE0e9avX5+b\nm/v222+rVKrp06cTQiwyady4cQaDYerUqVVVVWPGjNm5c+cDDzzQsGHDvn37xsfHt27d2t7ZxfmR\nANQHgSQmLn64WLJZW/I+ctX/6pYOtliTl5d3+/btgoKCDRs2fPHFF3RlVlbWqFGj6PKKFSvuv//+\nOXPmbNiw4eTJkxa7FxcX79ixo7y8vHHjxoQQGjCEkAkTJpjN5urq6t69e2/atOno0aO9evWiRx4x\nYgQhZP/+/V9++SXd3t7GQs518uTJgwcP3rhxo1GjRkOHDj148ODKlSvffvttQshrr7326KOPEkK2\nbt0aGxv797//nRBy4cKF77//ngue+fPn0/LcunVryZIl/EAqLi7+6quv/vvf/9Kc/uOPP5YvX75p\n06aAgIBevXrRaqWDswN4AAJJfF6ZPY4jxzoY5NWvX7/Zs2d36tSJfhkZGcl9Kygo6P333x82bNiq\nVausG9OKi4t79epFE4LvX//6V05OTnx8vEqlqqioqKiooOvDwsLoQpcuXY4cOeJ4YyHnunTpUt++\nfWmLIiFkyJAhP/zwg8W5AgICunTpQpfvueee2tpabndayyGEJCYmFhcXW5zOaDS2bduWfllbW5uU\nlGRRJAdnB/AABJJUuFhy0M0BRDd48OAnn3zSwQZms3nhwoXDhg378MMPJ06cSKsLnEaNGl24cMFi\nl+PHj+fk5JSWltKNO3bs6OD4wje2ea6GDRvyV/76668WJXRMp9PRhUuXLgUHB1scuUWLFhcvXnSw\n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\n8P+szFTtvwe03QAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "% Parâmetros para geração do canal sintético\n",
    "sPar.d0 = 5;                     % distância de referência d0\n",
    "sPar.P0 = 0;                     % Potência medida na distância de referência d0 (em dBm)\n",
    "sPar.nPoints = 50000;            % Número de amostras da rota de medição\n",
    "sPar.totalLength = 100;          % Distância final da rota de medição\n",
    "sPar.n = 4;                      % Expoente de perda de percurso\n",
    "sPar.sigma = 6;                  % Desvio padrão do shadowing em dB\n",
    "sPar.shadowingWindow = 200;      % Tamanho da janela de correlação do shadowing (colocar em função da distância de correlação)\n",
    "sPar.m = 4;                      % Parâmetro de Nakagami\n",
    "sPar.txPower = 0;                % Potência de transmissão em dBm\n",
    "sPar.nCDF = 40;                  % Número de pontos da CDF normalizada\n",
    "sPar.dW = 100;                   % Janela de estimação do sombreamento\n",
    "sPar.chFileName  = 'Prx_sintetico';\n",
    "% Distância entre pontos de medição\n",
    "sPar.dMed = sPar.totalLength/sPar.nPoints;\n",
    "% Chama função que gera o canal sintético\n",
    "[vtDist, vtPathLoss, vtShadCorr, vtFading, vtPrxdBm] = fGeraCanal(sPar);\n",
    "% Transforma potência em mWatts\n",
    "vtPtrxmW = 10.^(vtPrxdBm/10);\n",
    "nSamples = length(vtPtrxmW);\n",
    "% Vetores para canal estimado\n",
    "vtDesLarga = [];\n",
    "vtDesPequeEst = [];\n",
    "%\n",
    "% Cálculo do desvanecimenro lento e rápido\n",
    "dMeiaJanela = round((sPar.dW-1)/2);  % Meia janela\n",
    "ij = 1;\n",
    "for ik = dMeiaJanela + 1 : nSamples - dMeiaJanela\n",
    "    % Desvanecimento de larga escala: perda de percurso + sombreamento [dB]\n",
    "    vtDesLarga(ij) = 10*log10(mean(vtPtrxmW(ik-dMeiaJanela:ik+dMeiaJanela)));\n",
    "    % Desvanecimento de pequena escala [dB]\n",
    "    vtDesPequeEst(ij) = vtPrxdBm(ik)-vtDesLarga(ij);\n",
    "    ij = ij + 1;\n",
    "end\n",
    "%\n",
    "% Cálculo da envoltória normalizada (para efeitos de cálculo do fading)\n",
    "indexes = dMeiaJanela+1 : nSamples-dMeiaJanela;\n",
    "%vtPrxW = ((10.^(vtPrxdBm(indexes)./10))/1000);\n",
    "vtPtrxmWNew = 10.^(vtPrxdBm(indexes)/10);\n",
    "desLarga_Lin = (10.^(vtDesLarga(1:length(indexes))./10));\n",
    "envNormal = sqrt(vtPtrxmWNew)./sqrt(desLarga_Lin);\n",
    "%\n",
    "% Ajuste no tamanho dos vetores devido a filtragem\n",
    "vtDistEst = vtDist( dMeiaJanela+1 : nSamples-dMeiaJanela );\n",
    "vtPrxdBm = vtPrxdBm( dMeiaJanela+1 : nSamples-dMeiaJanela );\n",
    "%\n",
    "% Cálculo reta de perda de percurso\n",
    "vtDistLog = log10(vtDist);\n",
    "vtDistLogEst = log10(vtDistEst);\n",
    "% Cálculo do coeficientes da reta que melhor se caracteriza a perda de percurso\n",
    "dCoefReta = polyfit(vtDistLogEst,vtPrxdBm,1); \n",
    "% Expoente de perda de percurso estimado\n",
    "dNEst = -dCoefReta(1)/10;\n",
    "disp(['Estimação dos parâmetros de larga escala (W = ' num2str(sPar.dW) '):'])\n",
    "disp(['   Expoente de perda de percurso estimado n = ' num2str(dNEst)]);\n",
    "% Perda de percurso estimada para os pontos de medição\n",
    "vtPathLossEst = polyval(dCoefReta,vtDistLogEst);  \n",
    "%\n",
    "% Sombreamento\n",
    "vtShadCorrEst = vtDesLarga - vtPathLossEst;\n",
    "% Calcula a variância do sombreamento estimado\n",
    "stdShad = std(vtShadCorrEst);\n",
    "meanShad = mean(vtShadCorrEst);\n",
    "disp(['   Desvio padrão do sombreamento estimado = ' num2str(stdShad)]);\n",
    "disp(['   Média do sombreamento estimado = ' num2str(meanShad)]);\n",
    "vtPathLossEst = - vtPathLossEst;\n",
    "vtPrxEst = sPar.txPower - vtPathLossEst + vtShadCorrEst + vtDesPequeEst;\n",
    "%\n",
    "% Estimação da CDF do desvanecimento de pequena escala\n",
    "% Cálculo dos pontos do eixo x da cdf (espacamento igual entre os pontos)\n",
    "vtn = 1 : sPar.nCDF;\n",
    "xCDF = 1.2.^(vtn-1) * 0.01;\n",
    "%\n",
    "% Cálculo da CDF\n",
    "den = 0;\n",
    "cdffn=zeros(1,sPar.nCDF);\n",
    "for ik = 1:sPar.nCDF\n",
    "    for ij = 1:length(envNormal)\n",
    "        if envNormal(ij) <= xCDF(ik)\n",
    "            den = den + 1;\n",
    "        end\n",
    "        cdffn(ik) = cdffn(ik) + den;\n",
    "        den = 0;\n",
    "    end\n",
    "end\n",
    "%\n",
    "% Monta estrutura do histograma\n",
    "xccdfEst = 20.*log10(xCDF);\n",
    "yccdfEst = cdffn/(cdffn(end)); \n",
    "% Figuras do canal estimado\n",
    "figure;\n",
    "% Potência recebida com canal completo\n",
    "plot(vtDistLogEst,vtPrxEst); hold all;\n",
    "% Potência recebida com path loss\n",
    "plot(vtDistLogEst,sPar.txPower-vtPathLossEst,'linewidth', 2)\n",
    "% Potência recebida com path loss e shadowing\n",
    "plot(vtDistLogEst,sPar.txPower-vtPathLossEst+vtShadCorrEst,'linewidth', 2)\n",
    "%title('Canal estimado: Potência recebida no receptor vs. log da distância')\n",
    "xlabel('log_{10}(d)');\n",
    "ylabel('Potência [dBm]');\n",
    "legend('Prx canal completo', 'Prx (somente perda de percurso)', 'Prx (perda de percurso + sombreamento)');\n",
    "title('Prx original vs estimada');\n",
    "%\n",
    "% Figura do Path loss (original vs estimado) \n",
    "figure;\n",
    "plot(vtDistLog,-vtPathLoss);hold on;plot(vtDistLogEst,-vtPathLossEst);\n",
    "legend('Path Loss original','Path Loss estimado');\n",
    "title('Perda de percurso original vs estimada');\n",
    "%\n",
    "% Figura do Sombreamento (original vs estimado) \n",
    "figure;\n",
    "plot(vtDistLog,vtShadCorr);hold on;plot(vtDistLogEst,vtShadCorrEst);\n",
    "legend('Shadowing original','Shadowing estimado');\n",
    "title('Sombreamento original vs estimada');\n",
    "%\n",
    "% Figura do Fading (original vs estimado) \n",
    "figure;\n",
    "plot(vtDistLog,vtFading);hold on;plot(vtDistLogEst,vtDesPequeEst);\n",
    "legend('Fading original','Fading estimado');\n",
    "title('Fading original vs estimada');\n",
    "%\n",
    "% Plot das CDFs normalizadas Nakagami (assumindo que sabemos que o canal é m-Nakagami)- para vários valores de m\n",
    "figure;\n",
    "plot( xccdfEst, yccdfEst, '--' );\n",
    "legendaNaka = [{'CDF das amostras'}];\n",
    "hold all;\n",
    "vtm = [1 2 4 6];\n",
    "xCDF = 10.^(xccdfEst/20);\n",
    "tam_dist = length(gammainc(1*xCDF.^2,1)); % Tamanho da distribuição\n",
    "for ik = 1:length(vtm)%\n",
    "    im = vtm(ik);\n",
    "    cdfnaka(ik,1:tam_dist) = gammainc(im*xCDF.^2,im);\n",
    "    semilogy(20.*log10(xCDF),cdfnaka(ik,:));\n",
    "    legendaNaka = [legendaNaka ; {['m = ' num2str(vtm(ik))]}];\n",
    "end\n",
    "legend(legendaNaka);\n",
    "axis([-30 10 1e-5 1]);\n",
    "title('Estudo do fading com o conhecimento da distribuição');\n",
    "xlabel('x');\n",
    "ylabel('F(x)');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Prática 03: Influência da janela de filtragem para separação dos desvanecimentos de larga e pequena escalas e estimação da distribuição do fading\n",
    "\n",
    "Vamos escrever um código para estimar o desvanecimento de pequena escala (sua distribuição e parâmetros) e investigar a influência do tamanho da janela de filtragem para separação dos desvanecimentos de larga e pequena escalas. O código irá aplicar alguns testes estatísticos e fará um estudo com o conhecimento a priori do canal e sem seu conhecimento.\n",
    "\n",
    "**Passo 01:** Crie uma função chamada **fGeraCanal.m** da prática 02.\n",
    "\n",
    "\n",
    "**Passo 02:** Crie uma função chamada **fEstimaCanal.m** com o código a seguir. Ele é uma versão do código **handson3_P2_1.m** escrito em forma de função. Isso foi feito para melhor organizar o código da prática 03.\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Created file '/home/gppcom/2019/EEC1714/fEstimaCanal.m'.\n"
     ]
    }
   ],
   "source": [
    "%%file fEstimaCanal.m\n",
    "function [sOut] = fEstimaCanal(sPar)\n",
    "% PURPOSE: Estima parâmetros do canal: path loss, shadowing e desvanecimento plano\n",
    "%\n",
    "% ENTRADAS: na estrutura sPar\n",
    "%    - P0: potência de referência medida na distância d0\n",
    "%    - d0: distância d0 de referência\n",
    "%    - shadWindowFilter: janela para média móvel do desvanecimento da larga\n",
    "%    escala\n",
    "%    - txPower: potência de transmissão em dBm\n",
    "%    - nCDF: Número de pontos da CDF normalizada\n",
    "%\n",
    "% SAÍDAS: Estrutura sOut com\n",
    "%    - vtDist: pontos de medição [m]\n",
    "%    - vtPathLossEst: amostras estimadas da perda de percurso\n",
    "%    - vtShadCorr: amostras do somrbeamento\n",
    "%    - vtDesPequeEst: amostras do desvanecimento de pequena escala\n",
    "%    - vtPrxEst: potência recebida estimada (canal completo)\n",
    "%    - dNEst: Expoente de perda de percurso estimado\n",
    "%    - dStdShadEst: Desvio padrão do shadwoing estimado\n",
    "%    - dStdMeanShadEst: Média do shadwoing estimado\n",
    "%    - vtXCcdfEst: Valores dos Bins da CCDF do desvanecimento de pequena escala \n",
    "%    - vtYCcdfEst: Quantidade de amostras em cada bin da CCDF do desvanecimento de pequena escala\n",
    "\n",
    "% Lê canal gerado\n",
    "load(sPar.chFileName);\n",
    "%\n",
    "vtPtrxmW = 10.^(vtPrxdBm/10);\n",
    "nSamples = length(vtPtrxmW);\n",
    "% Vetores para canal estimado\n",
    "vtDesLarga = [];\n",
    "vtDesPequeEst = [];\n",
    "%\n",
    "% Cálculo do desvanecimenro lento e rápido\n",
    "dMeiaJanela = round((sPar.dW-1)/2);  % Meia janela\n",
    "ij = 1;\n",
    "for ik = dMeiaJanela + 1 : nSamples - dMeiaJanela\n",
    "    % Desvanecimento de larga escala: perda de percurso + sombreamento [dB]\n",
    "    vtDesLarga(ij) = 10*log10(mean(vtPtrxmW(ik-dMeiaJanela:ik+dMeiaJanela)));\n",
    "    % Desvanecimento de pequena escala [dB]\n",
    "    vtDesPequeEst(ij) = vtPrxdBm(ik)-vtDesLarga(ij);\n",
    "    ij = ij + 1;\n",
    "end\n",
    "%\n",
    "% Cálculo da envoltória normalizada (para efeitos de cálculo do fading)\n",
    "indexes = dMeiaJanela+1 : nSamples-dMeiaJanela;\n",
    "%vtPrxW = ((10.^(vtPrxdBm(indexes)./10))/1000);\n",
    "vtPtrxmWNew = 10.^(vtPrxdBm(indexes)/10);\n",
    "desLarga_Lin = (10.^(vtDesLarga(1:length(indexes))./10));\n",
    "vtEnvNorm = sqrt(vtPtrxmWNew)./sqrt(desLarga_Lin);\n",
    "%\n",
    "% Ajuste no tamanho dos vetores devido a filtragem\n",
    "vtDistEst = vtDist( dMeiaJanela+1 : nSamples-dMeiaJanela );\n",
    "vtPrxdBm = vtPrxdBm( dMeiaJanela+1 : nSamples-dMeiaJanela );\n",
    "%\n",
    "% Cálculo reta de perda de percurso\n",
    "vtDistLog = log10(vtDist);\n",
    "vtDistLogEst = log10(vtDistEst);\n",
    "% Cálculo do coeficientes da reta que melhor se caracteriza a perda de percurso\n",
    "dCoefReta = polyfit(vtDistLogEst,vtPrxdBm,1); \n",
    "% Expoente de perda de percurso estimado\n",
    "dNEst = -dCoefReta(1)/10;\n",
    "% Perda de percurso estimada para os pontos de medição\n",
    "vtPathLossEst = polyval(dCoefReta,vtDistLogEst);  \n",
    "%\n",
    "% Sombreamento\n",
    "vtShadCorrEst = vtDesLarga - vtPathLossEst;\n",
    "% Calcula a variância do sombreamento estimado\n",
    "dStdShadEst = std(vtShadCorrEst);\n",
    "dStdMeanShadEst = mean(vtShadCorrEst);\n",
    "vtPathLossEst = - vtPathLossEst;\n",
    "vtPrxEst = sPar.txPower - vtPathLossEst + vtShadCorrEst + vtDesPequeEst;\n",
    "%\n",
    "% Estimação da CDF do desvanecimento de pequena escala\n",
    "% Cálculo dos pontos do eixo x da cdf (espacamento igual entre os pontos)\n",
    "vtn = 1 : sPar.nCDF;\n",
    "xCDF = 1.2.^(vtn-1) * 0.01;\n",
    "%\n",
    "% Cálculo da CDF\n",
    "den = 0;\n",
    "cdffn=zeros(1,sPar.nCDF);\n",
    "for ik = 1:sPar.nCDF\n",
    "    for ij = 1:length(vtEnvNorm)\n",
    "        if vtEnvNorm(ij) <= xCDF(ik)\n",
    "            den = den + 1;\n",
    "        end\n",
    "        cdffn(ik) = cdffn(ik) + den;\n",
    "        den = 0;\n",
    "    end\n",
    "end\n",
    "%\n",
    "% Monta estrutura do histograma\n",
    "vtXCcdfEst = 20.*log10(xCDF);\n",
    "vtYCcdfEst = cdffn/(cdffn(end)); \n",
    "%\n",
    "sOut.vtDistEst = vtDistEst;\n",
    "sOut.vtPathLossEst = vtPathLossEst;\n",
    "sOut.dNEst = dNEst;\n",
    "sOut.vtShadCorrEst = vtShadCorrEst;\n",
    "sOut.dStdShadEst = dStdShadEst;\n",
    "sOut.dStdMeanShadEst = dStdMeanShadEst;\n",
    "sOut.vtDesPequeEst = vtDesPequeEst;\n",
    "sOut.vtPrxEst = vtPrxEst;\n",
    "sOut.vtXCcdfEst = vtXCcdfEst;\n",
    "sOut.vtYCcdfEst = vtYCcdfEst;\n",
    "sOut.vtEnvNorm = vtEnvNorm;"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "**Passo 03:** Crie um script chamado **handson3_P3_1.m** com o código a seguir. Nesse código, vamos:\n",
    "\n",
    "1. Gerar um canal sintético;\n",
    "2. Estimar os parâmetros do canal para vários valores de janela de filtragem para separação dos desvanecimentos de larga e pequena escalas. Os valores das janelas podem ser configurados em **vtW**;\n",
    "3. De posse das séries temporais estimadas e da séries originais, calcular o MSE do shadowing e do desvanecimento de pequena escala para cada janela;\n",
    "4. Mostrar as janelas com menor MSE."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Canal sintético:\n",
      "   Média do sombreamento: -0.24937\n",
      "   Std do sombreamento: 6.0232\n",
      "   Janela de correlação do sombreamento: 200 amostras\n",
      "   Expoente de path loss: 4\n",
      "   m de Nakagami: 4\n",
      "Estimação dos parâmetros de larga escala (W = 10):\n",
      "   Expoente de perda de percurso estimado n = 4.0427\n",
      "   Desvio padrão do sombreamento estimado = 6.0494\n",
      "   Média do sombreamento estimado = 0.50963\n",
      "   MSE Shadowing = 1.0547\n",
      "----\n",
      " \n",
      "Estimação dos parâmetros de larga escala (W = 50):\n",
      "   Expoente de perda de percurso estimado n = 4.0436\n",
      "   Desvio padrão do sombreamento estimado = 5.9757\n",
      "   Média do sombreamento estimado = 0.61699\n",
      "   MSE Shadowing = 0.90491\n",
      "----\n",
      " \n",
      "Estimação dos parâmetros de larga escala (W = 150):\n",
      "   Expoente de perda de percurso estimado n = 4.047\n",
      "   Desvio padrão do sombreamento estimado = 5.6859\n",
      "   Média do sombreamento estimado = 1.0424\n",
      "   MSE Shadowing = 2.7487\n",
      "----\n",
      " \n",
      "Estimação dos parâmetros de larga escala (W = 200):\n",
      "   Expoente de perda de percurso estimado n = 4.0496\n",
      "   Desvio padrão do sombreamento estimado = 5.488\n",
      "   Média do sombreamento estimado = 1.3138\n",
      "   MSE Shadowing = 4.8837\n",
      "----\n",
      " \n",
      "Estudo na melhor janela de filtragem\n",
      "   Janelas utilizadas = 10   50  150  200\n",
      "   Melhor MSE relativo aos valores reais do Shadowing (melhor janela):\n",
      "      Melhor janela W = 50: MSE Shadowing = 0.90491\n",
      "   Melhor MSE relativo aos valores reais do Fading:\n",
      "      Melhor janela W = 50: MSE Shadowing = 0.15017\n",
      "----------------------------------------------------------------------------------\n",
      " \n"
     ]
    }
   ],
   "source": [
    "close all;clear all;clc;\n",
    "% Estimação com o conhecimento do sombreamento e do fading\n",
    "% Parâmetros para geração do canal sintético\n",
    "sPar.d0 = 5;                     % distância de referência d0\n",
    "sPar.P0 = 0;                     % Potência medida na distância de referência d0 (em dBm)\n",
    "sPar.nPoints = 50000;            % Número de amostras da rota de medição\n",
    "sPar.totalLength = 100;          % Distância final da rota de medição\n",
    "sPar.n = 4;                      % Expoente de perda de percurso\n",
    "sPar.sigma = 6;                  % Desvio padrão do shadowing em dB\n",
    "sPar.shadowingWindow = 200;      % Tamanho da janela de correlação do shadowing (colocar em função da distância de correlação)\n",
    "sPar.m = 4;                      % Parâmetro de Nakagami\n",
    "sPar.txPower = 0;                % Potência de transmissão em dBm\n",
    "sPar.nCDF = 40;                  % Número de pontos da CDF normalizada\n",
    "sPar.dW = 100;                   % Janela de estimação do sombreamento\n",
    "sPar.chFileName  = 'Prx_sintetico';\n",
    "% Distância entre pontos de medição\n",
    "sPar.dMed = sPar.totalLength/sPar.nPoints;\n",
    "%\n",
    "% Chama função que gera o canal sintético\n",
    "[vtDist, vtPathLoss, vtShadCorr, vtFading, vtPrxdBm] = fGeraCanal(sPar);\n",
    "%\n",
    "% Mostra informações do canal sintético\n",
    "disp('Canal sintético:')\n",
    "disp(['   Média do sombreamento: ' num2str(mean(vtShadCorr)) ]);\n",
    "disp(['   Std do sombreamento: ' num2str(std(vtShadCorr)) ]);\n",
    "disp(['   Janela de correlação do sombreamento: ' num2str(sPar.shadowingWindow) ' amostras' ]);\n",
    "disp(['   Expoente de path loss: ' num2str(sPar.n) ]);\n",
    "disp(['   m de Nakagami: ' num2str(sPar.m) ]);\n",
    "%\n",
    "% Várias janelas de filtragem para testar a estimação\n",
    "vtW = [10 50 150 200];\n",
    "for iw = 1: length(vtW)\n",
    "    % Configura valor da janela de filtragem\n",
    "    sPar.dW = vtW(iw);\n",
    "    % Chama função que estima o canal sintético\n",
    "    [sOut] = fEstimaCanal(sPar);\n",
    "    % Parser de variáveis\n",
    "    vtDistEst = sOut.vtDistEst;\n",
    "    vtPathLossEst = sOut.vtPathLossEst;\n",
    "    dNEst = sOut.dNEst;\n",
    "    vtShadCorrEst = sOut.vtShadCorrEst;\n",
    "    dStdShadEst = sOut.dStdShadEst;\n",
    "    dStdMeanShadEst = sOut.dStdMeanShadEst;\n",
    "    vtDesPequeEst = sOut.vtDesPequeEst;\n",
    "    vtPrxEst = sOut.vtPrxEst;\n",
    "    vtXCcdfEst = sOut.vtXCcdfEst;\n",
    "    vtYCcdfEst = sOut.vtYCcdfEst;\n",
    "    vtDistLogEst = log10(vtDistEst);\n",
    "    vtDistLog = log10(vtDist);\n",
    "    % MSE com Shadowing conhecido\n",
    "    dMeiaJanela = round((sPar.dW-1)/2);\n",
    "    vtMSEShad(iw) = immse(vtShadCorr(dMeiaJanela+1 : end-dMeiaJanela ), vtShadCorrEst);\n",
    "    %\n",
    "    % MSE com Fading conhecido\n",
    "    vtMSEFad(iw) = immse(vtFading(dMeiaJanela+1 : end-dMeiaJanela ), vtDesPequeEst);\n",
    "    %\n",
    "    disp(['Estimação dos parâmetros de larga escala (W = ' num2str(sPar.dW) '):'])\n",
    "    disp(['   Expoente de perda de percurso estimado n = ' num2str(dNEst)]);\n",
    "    disp(['   Desvio padrão do sombreamento estimado = ' num2str(dStdShadEst)]);\n",
    "    disp(['   Média do sombreamento estimado = ' num2str(dStdMeanShadEst)]);\n",
    "    disp(['   MSE Shadowing = ' num2str(vtMSEShad(iw))]);\n",
    "    disp('----');\n",
    "    disp(' ');\n",
    "end\n",
    "% Display informação sobre o estudo das janelas\n",
    "disp(['Estudo na melhor janela de filtragem']);\n",
    "disp(['   Janelas utilizadas = ' num2str(vtW)]);\n",
    "% Melhor janela com Shadowing conhecido\n",
    "[valBestShad, posBestShad] = min(vtMSEShad);\n",
    "disp(['   Melhor MSE relativo aos valores reais do Shadowing (melhor janela):'])\n",
    "disp(['      Melhor janela W = ' num2str(vtW(posBestShad)) ': MSE Shadowing = ' num2str(valBestShad)]);\n",
    "% Melhor janela com Fading conhecido\n",
    "[valBestFad, posBestFad] = min(vtMSEFad);\n",
    "disp(['   Melhor MSE relativo aos valores reais do Fading:'])\n",
    "disp(['      Melhor janela W = ' num2str(vtW(posBestFad)) ': MSE Shadowing = ' num2str(valBestFad)]);\n",
    "disp('----------------------------------------------------------------------------------');\n",
    "disp(' ');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**A execução do código resulta em:**\n",
    "1. Mensagens de texto com informações sobre o canal sintético gerado;\n",
    "2. Mensagens de texto com informações sobre o canal estimado com cada valor de janela de filtragem;\n",
    "\n",
    "** Analise o código com cuidado. Tente compreender a modelagem e a sintaxe usada. Discuta com os colegas. Faça um debug usando a IDE do Matlab.**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Passo 03:** Crie um script chamado **handson3_P3_2.m** com o código a seguir. Nesse código, vamos manter o mesmo código do **handson3_P3_1.m** e acrescentar:\n",
    "\n",
    "1. Estimar a melhor janela pelo MSE da CDF do desvanecimento de pequena escala para vários valores de janela de filtragem e vários valores do $m$ de Nakagami (comparar com o resultado do passo anterior);\n",
    "2. Mostrar a CDF do desvanecimento de pequena escala para os vários valores de janela de filtragem."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Canal sintético:\n",
      "   Média do sombreamento: 0.68848\n",
      "   Std do sombreamento: 6.2298\n",
      "   Janela de correlação do sombreamento: 200 amostras\n",
      "   Expoente de path loss: 4\n",
      "   m de Nakagami: 4\n",
      "Estimação dos parâmetros de larga escala (W = 10):\n",
      "   Expoente de perda de percurso estimado n = 3.9584\n",
      "   Desvio padrão do sombreamento estimado = 6.2534\n",
      "   Média do sombreamento estimado = 0.51793\n",
      "   MSE Shadowing = 0.50302\n",
      "----\n",
      " \n",
      "Estimação dos parâmetros de larga escala (W = 50):\n",
      "   Expoente de perda de percurso estimado n = 3.9572\n",
      "   Desvio padrão do sombreamento estimado = 6.1784\n",
      "   Média do sombreamento estimado = 0.62476\n",
      "   MSE Shadowing = 0.15847\n",
      "----\n",
      " \n",
      "Estimação dos parâmetros de larga escala (W = 150):\n",
      "   Expoente de perda de percurso estimado n = 3.9583\n",
      "   Desvio padrão do sombreamento estimado = 5.8411\n",
      "   Média do sombreamento estimado = 1.0492\n",
      "   MSE Shadowing = 1.1417\n",
      "----\n",
      " \n",
      "Estimação dos parâmetros de larga escala (W = 200):\n",
      "   Expoente de perda de percurso estimado n = 3.9601\n",
      "   Desvio padrão do sombreamento estimado = 5.6079\n",
      "   Média do sombreamento estimado = 1.3229\n",
      "   MSE Shadowing = 2.7005\n",
      "----\n",
      " \n",
      "Estudo na melhor janela de filtragem\n",
      "   Janelas utilizadas = 10   50  150  200\n",
      "   Melhor MSE relativo aos valores reais do Shadowing (melhor janela):\n",
      "      Melhor janela W = 50: MSE Shadowing = 0.15847\n",
      "   Melhor MSE relativo aos valores reais do Fading:\n",
      "      Melhor janela W = 50: MSE Shadowing = 0.13409\n",
      "----------------------------------------------------------------------------------\n",
      " \n",
      "MSE da CDF com várias janelas de filtragem com o conhecimento do Fading:\n",
      "   m = 2, W = 10: MSE Fading = 0.0014298\n",
      "   m = 2, W = 50: MSE Fading = 0.0010976\n",
      "   m = 2, W = 150: MSE Fading = 0.00060298\n",
      "   m = 2, W = 200: MSE Fading = 0.00046922\n",
      "----\n",
      "   m = 3, W = 10: MSE Fading = 0.0002963\n",
      "   m = 3, W = 50: MSE Fading = 0.00015099\n",
      "   m = 3, W = 150: MSE Fading = 0.00024141\n",
      "   m = 3, W = 200: MSE Fading = 0.00057797\n",
      "----\n",
      "   m = 4, W = 10: MSE Fading = 2.7085e-05\n",
      "   m = 4, W = 50: MSE Fading = 5.4044e-06\n",
      "   m = 4, W = 150: MSE Fading = 0.00046312\n",
      "   m = 4, W = 200: MSE Fading = 0.0010849\n",
      "----\n",
      "   m = 5, W = 10: MSE Fading = 3.0317e-05\n",
      "   m = 5, W = 50: MSE Fading = 9.789e-05\n",
      "   m = 5, W = 150: MSE Fading = 0.00081078\n",
      "   m = 5, W = 200: MSE Fading = 0.0016248\n",
      "----\n",
      "   Melhor MSE relativo aos valores reais do fading:\n",
      "   W = 50 e m = 4: MSE Fading = 5.4044e-06\n",
      "----------------------------------------------------------------------------------\n",
      " \n"
     ]
    },
    {
     "data": {
      "image/png": "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\ngg==\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "close all;clear all;clc;\n",
    "% Estimação com o conhecimento do sombreamento e do fading\n",
    "% Parâmetros para geração do canal sintético\n",
    "sPar.d0 = 5;                     % distância de referência d0\n",
    "sPar.P0 = 0;                     % Potência medida na distância de referência d0 (em dBm)\n",
    "sPar.nPoints = 50000;            % Número de amostras da rota de medição\n",
    "sPar.totalLength = 100;          % Distância final da rota de medição\n",
    "sPar.n = 4;                      % Expoente de perda de percurso\n",
    "sPar.sigma = 6;                  % Desvio padrão do shadowing em dB\n",
    "sPar.shadowingWindow = 200;      % Tamanho da janela de correlação do shadowing (colocar em função da distância de correlação)\n",
    "sPar.m = 4;                      % Parâmetro de Nakagami\n",
    "sPar.txPower = 0;                % Potência de transmissão em dBm\n",
    "sPar.nCDF = 40;                  % Número de pontos da CDF normalizada\n",
    "sPar.dW = 100;                   % Janela de estimação do sombreamento\n",
    "sPar.chFileName  = 'Prx_sintetico';\n",
    "% Distância entre pontos de medição\n",
    "sPar.dMed = sPar.totalLength/sPar.nPoints;\n",
    "%\n",
    "% Chama função que gera o canal sintético\n",
    "[vtDist, vtPathLoss, vtShadCorr, vtFading, vtPrxdBm] = fGeraCanal(sPar);\n",
    "%\n",
    "% Mostra informações do canal sintético\n",
    "disp('Canal sintético:')\n",
    "disp(['   Média do sombreamento: ' num2str(mean(vtShadCorr)) ]);\n",
    "disp(['   Std do sombreamento: ' num2str(std(vtShadCorr)) ]);\n",
    "disp(['   Janela de correlação do sombreamento: ' num2str(sPar.shadowingWindow) ' amostras' ]);\n",
    "disp(['   Expoente de path loss: ' num2str(sPar.n) ]);\n",
    "disp(['   m de Nakagami: ' num2str(sPar.m) ]);\n",
    "%\n",
    "% Várias janelas de filtragem para testar a estimação\n",
    "vtW = [10 50 150 200];\n",
    "for iw = 1: length(vtW)\n",
    "    % Configura valor da janela de filtragem\n",
    "    sPar.dW = vtW(iw);\n",
    "    % Chama função que estima o canal sintético\n",
    "    sOut(iw) = fEstimaCanal(sPar);\n",
    "    % Parser de variáveis\n",
    "    vtDistEst = sOut(iw).vtDistEst;\n",
    "    vtPathLossEst = sOut(iw).vtPathLossEst;\n",
    "    dNEst = sOut(iw).dNEst;\n",
    "    vtShadCorrEst = sOut(iw).vtShadCorrEst;\n",
    "    dStdShadEst = sOut(iw).dStdShadEst;\n",
    "    dStdMeanShadEst = sOut(iw).dStdMeanShadEst;\n",
    "    vtDesPequeEst = sOut(iw).vtDesPequeEst;\n",
    "    vtPrxEst = sOut(iw).vtPrxEst;\n",
    "    vtXCcdfEst = sOut(iw).vtXCcdfEst;\n",
    "    vtYCcdfEst = sOut(iw).vtYCcdfEst;\n",
    "    vtDistLogEst = log10(vtDistEst);\n",
    "    vtDistLog = log10(vtDist);\n",
    "    % MSE com Shadowing conhecido\n",
    "    dMeiaJanela = round((sPar.dW-1)/2);\n",
    "    vtMSEShad(iw) = immse(vtShadCorr(dMeiaJanela+1 : end-dMeiaJanela ), vtShadCorrEst);\n",
    "    %\n",
    "    % MSE com Fading conhecido\n",
    "    vtMSEFad(iw) = immse(vtFading(dMeiaJanela+1 : end-dMeiaJanela ), vtDesPequeEst);\n",
    "    %\n",
    "    disp(['Estimação dos parâmetros de larga escala (W = ' num2str(sPar.dW) '):'])\n",
    "    disp(['   Expoente de perda de percurso estimado n = ' num2str(dNEst)]);\n",
    "    disp(['   Desvio padrão do sombreamento estimado = ' num2str(dStdShadEst)]);\n",
    "    disp(['   Média do sombreamento estimado = ' num2str(dStdMeanShadEst)]);\n",
    "    disp(['   MSE Shadowing = ' num2str(vtMSEShad(iw))]);\n",
    "    disp('----');\n",
    "    disp(' ');\n",
    "end\n",
    "% Display informação sobre o estudo das janelas\n",
    "disp(['Estudo na melhor janela de filtragem']);\n",
    "disp(['   Janelas utilizadas = ' num2str(vtW)]);\n",
    "% Melhor janela com Shadowing conhecido\n",
    "[valBestShad, posBestShad] = min(vtMSEShad);\n",
    "disp(['   Melhor MSE relativo aos valores reais do Shadowing (melhor janela):'])\n",
    "disp(['      Melhor janela W = ' num2str(vtW(posBestShad)) ': MSE Shadowing = ' num2str(valBestShad)]);\n",
    "% Melhor janela com Fading conhecido\n",
    "[valBestFad, posBestFad] = min(vtMSEFad);\n",
    "disp(['   Melhor MSE relativo aos valores reais do Fading:'])\n",
    "disp(['      Melhor janela W = ' num2str(vtW(posBestFad)) ': MSE Shadowing = ' num2str(valBestFad)]);\n",
    "disp('----------------------------------------------------------------------------------');\n",
    "disp(' ');\n",
    "%\n",
    "% Estudo visual: Estimação do Fading para várias janelas de filtragem e\n",
    "% vários valores do m de Nakagami\n",
    "%\n",
    "% Plot das CCDFs do Fading para cada janela\n",
    "figure;\n",
    "chMarkers = ['o-';'x-';'s-';'d-';'>-';'^-';'-.'];\n",
    "for iw = 1:length(vtW)\n",
    "    plot( sOut(iw).vtXCcdfEst,  sOut(iw).vtYCcdfEst, chMarkers(iw,:) ); hold all;\n",
    "end\n",
    "chLegendaW = strcat('W = ',cellstr(num2str(vtW')));\n",
    "legend(chLegendaW);\n",
    "xlabel('x');\n",
    "ylabel('F(x)');\n",
    "%\n",
    "% Plot das CDFs Nakagami teórica o valor do m de entrada\n",
    "vtm = sPar.m;\n",
    "xCDF = 10.^(sOut(1).vtXCcdfEst/20);\n",
    "tam_dist = length(gammainc(1*xCDF.^2,1)); % Tamanho da distribuição\n",
    "for ik = 1:length(vtm)\n",
    "    im = vtm(ik);\n",
    "    cdfnaka(ik,1:tam_dist) = gammainc(im*xCDF.^2,im);\n",
    "    semilogy(20.*log10(xCDF),cdfnaka(ik,:),'--', 'linewidth', 2);\n",
    "    chLegendaNaka = strcat('m = ',cellstr(num2str(vtm'))); %criação da legenda automática\n",
    "end\n",
    "legend([chLegendaW; chLegendaNaka]);\n",
    "axis([-10 10 1e-5 1]);\n",
    "% Cálculo do erro médio baseado na comparação de CDFs \n",
    "disp('MSE da CDF com várias janelas de filtragem com o conhecimento do Fading:')\n",
    "% Cálculo do erro médio quadrático da CDF do Fading\n",
    "vtm = [2:1:5];\n",
    "for ik = 1:length(vtm)\n",
    "    im = vtm(ik);\n",
    "    cdfnaka(ik,1:tam_dist) = gammainc(im*xCDF.^2,im);\n",
    "    for il = 1:length(vtW)\n",
    "        mtMSEFad(ik,il) = immse(cdfnaka(ik,:), sOut(il).vtYCcdfEst);\n",
    "        disp(['   m = ' num2str(vtm(ik)) ', W = ' num2str(vtW(il)) ': MSE Fading = ' num2str(mtMSEFad(ik,il))]);\n",
    "    end\n",
    "    disp('----');\n",
    "end\n",
    "[vLinha, posLinha] = min(mtMSEFad); % Melhor m para cada W\n",
    "[valCol, posCol] = min(vLinha); % Melhor W de todos (entre os com menores m)\n",
    "bestLin = posLinha(posCol);\n",
    "bestCol = posCol;\n",
    "disp(['   Melhor MSE relativo aos valores reais do fading:'])\n",
    "disp(['   W = ' num2str(vtW(bestCol)) ' e m = ' num2str(vtm(bestLin)) ': MSE Fading = ' num2str(mtMSEFad(bestLin, bestCol))]);\n",
    "disp('----------------------------------------------------------------------------------');\n",
    "disp(' ');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Até esse momento nos concentramos em estimar os parâmetros do canal com o conhecimento a priori da série temporal do sombreamento e do desvnecimento de pequena escala. Contudo, para estimação de canal baseado em uma medição de campo (e não de um sinal sintético), esse conhecimento não é possível. Na verdade, conhecer as características estatísticas dessas séries temporais é a grande tarefa da estimação.  \n",
    "\n",
    "Um método muito utilizado para estimação de parâmetros é o MLE (Maximum Likelihood Estimation). O MLE é um método de estimar os parâmetros ${\\theta}$ de uma específica função distribuição de probabilidades $f(x_{i}|{\\theta})$ de uma variável aleatória $X$ [[Fonte]](http://times.cs.uiuc.edu/course/410/note/mle.pdf). A estimação é baseada em amostras i.i.d. (independent and identically distributed) $x_{i}$ e na função  log-likelihood (máxima verossimilhança) definida como:\n",
    "\n",
    "&nbsp; \n",
    "<center>\n",
    "$\\ell({\\theta}) = \\sum_{i=1}^{N} \\log f (x_{i}| {\\theta})$.\n",
    "</center>\n",
    "\n",
    "Então, o MLE escolhe os parâmetros $\\hat{\\theta}$ que maximiza a função de máxima verossimilhança, resultando nos parâmtros mais prováveis de gerar os dados observados [[Fonte]](https://www.jstage.jst.go.jp/article/iis/17/3/17_3_155/_pdf/-char/en).\n",
    "\n",
    "Especificamente no MatLab, a função **fitdist** foi contruída para fazer o MLE [[Fonte]](https://www.mathworks.com/help/stats/fitdist.html#btu538h-pd).\n",
    "\n",
    "\n",
    "**Passo 03:** Crie um script chamado **handson3_P3_3.m** com o código a seguir. Nesse código, vamos manter o mesmo código do **handson3_P3_2.m** e acrescentar:\n",
    "\n",
    "1. Estimar via MLE os parâmetros das distribuição Nakagami, Rice, Rayleigh e Weibull para os dados do desvanecimento de pequena escala estimado para as várias janelas (usar comando **fitdist** do Matlab);\n",
    "2. Além de constatar a possibilidade de parâmetros de para cada distribuição, inspecionaremos quais os parâmetros estimados para Nakagami, já que sabemos que esse é o tipo de canal gerado."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Canal sintético:\n",
      "   Média do sombreamento: 0.14884\n",
      "   Std do sombreamento: 5.8693\n",
      "   Janela de correlação do sombreamento: 200 amostras\n",
      "   Expoente de path loss: 4\n",
      "   m de Nakagami: 4\n",
      " \n",
      "Estimação do Fading para várias janelas (estudo númerico sem conhecimento a priori do canal)\n",
      "Resultados com fitdist do Matlab\n",
      "Janela W = 10\n",
      "  Nakagami: m = 4.4196, omega = 0.99937\n",
      "  Rice: K = 7.9449\n",
      "  Rayleigh: sigma = 0.70688\n",
      "  Weibull: k = 4.5836, lambda = 1.0628\n",
      " \n",
      "Janela W = 50\n",
      "  Nakagami: m = 4.0807, omega = 0.98601\n",
      "  Rice: K = 7.1451\n",
      "  Rayleigh: sigma = 0.70214\n",
      "  Weibull: k = 4.3064, lambda = 1.0563\n",
      " \n",
      "Janela W = 150\n",
      "  Nakagami: m = 3.4946, omega = 0.92032\n",
      "  Rice: K = 5.8693\n",
      "  Rayleigh: sigma = 0.67835\n",
      "  Weibull: k = 3.8966, lambda = 1.0205\n",
      " \n",
      "Janela W = 200\n",
      "  Nakagami: m = 2.9824, omega = 0.89177\n",
      "  Rice: K = 4.7841\n",
      "  Rayleigh: sigma = 0.66775\n",
      "  Weibull: k = 3.5553, lambda = 1.0032\n",
      " \n"
     ]
    }
   ],
   "source": [
    "close all;clear all;clc;\n",
    "% Estimação com o conhecimento do sombreamento e do fading\n",
    "% Parâmetros para geração do canal sintético\n",
    "sPar.d0 = 5;                     % distância de referência d0\n",
    "sPar.P0 = 0;                     % Potência medida na distância de referência d0 (em dBm)\n",
    "sPar.nPoints = 50000;            % Número de amostras da rota de medição\n",
    "sPar.totalLength = 100;          % Distância final da rota de medição\n",
    "sPar.n = 4;                      % Expoente de perda de percurso\n",
    "sPar.sigma = 6;                  % Desvio padrão do shadowing em dB\n",
    "sPar.shadowingWindow = 200;      % Tamanho da janela de correlação do shadowing (colocar em função da distância de correlação)\n",
    "sPar.m = 4;                      % Parâmetro de Nakagami\n",
    "sPar.txPower = 0;                % Potência de transmissão em dBm\n",
    "sPar.nCDF = 40;                  % Número de pontos da CDF normalizada\n",
    "sPar.dW = 100;                   % Janela de estimação do sombreamento\n",
    "sPar.chFileName  = 'Prx_sintetico';\n",
    "% Distância entre pontos de medição\n",
    "sPar.dMed = sPar.totalLength/sPar.nPoints;\n",
    "%\n",
    "% Chama função que gera o canal sintético\n",
    "[vtDist, vtPathLoss, vtShadCorr, vtFading, vtPrxdBm] = fGeraCanal(sPar);\n",
    "%\n",
    "% Mostra informações do canal sintético\n",
    "disp('Canal sintético:')\n",
    "disp(['   Média do sombreamento: ' num2str(mean(vtShadCorr)) ]);\n",
    "disp(['   Std do sombreamento: ' num2str(std(vtShadCorr)) ]);\n",
    "disp(['   Janela de correlação do sombreamento: ' num2str(sPar.shadowingWindow) ' amostras' ]);\n",
    "disp(['   Expoente de path loss: ' num2str(sPar.n) ]);\n",
    "disp(['   m de Nakagami: ' num2str(sPar.m) ]);\n",
    "%\n",
    "% Várias janelas de filtragem para testar a estimação\n",
    "vtW = [10 50 150 200];\n",
    "for iw = 1: length(vtW)\n",
    "    % Configura valor da janela de filtragem\n",
    "    sPar.dW = vtW(iw);\n",
    "    % Chama função que estima o canal sintético\n",
    "    sOut(iw) = fEstimaCanal(sPar);\n",
    "    % Parser de variáveis\n",
    "    vtDistEst = sOut(iw).vtDistEst;\n",
    "    vtPathLossEst = sOut(iw).vtPathLossEst;\n",
    "    dNEst = sOut(iw).dNEst;\n",
    "    vtShadCorrEst = sOut(iw).vtShadCorrEst;\n",
    "    dStdShadEst = sOut(iw).dStdShadEst;\n",
    "    dStdMeanShadEst = sOut(iw).dStdMeanShadEst;\n",
    "    vtDesPequeEst = sOut(iw).vtDesPequeEst;\n",
    "    vtPrxEst = sOut(iw).vtPrxEst;\n",
    "    vtXCcdfEst = sOut(iw).vtXCcdfEst;\n",
    "    vtYCcdfEst = sOut(iw).vtYCcdfEst;\n",
    "    vtDistLogEst = log10(vtDistEst);\n",
    "    vtDistLog = log10(vtDist);\n",
    "end\n",
    "% Estimação cega via MLE\n",
    "disp(' ')\n",
    "disp('Estimação do Fading para várias janelas (estudo númerico sem conhecimento a priori do canal)');\n",
    "disp('Resultados com fitdist do Matlab')\n",
    "for iw = 1:length(vtW)%\n",
    "    disp(['Janela W = ' num2str(vtW(iw))]);\n",
    "    %\n",
    "    sNaka(iw) = fitdist([sOut(iw).vtEnvNorm]','Nakagami');\n",
    "    disp(['  Nakagami: m = ' num2str(sNaka(iw).mu) ', omega = ' num2str(sNaka(iw).omega)]);\n",
    "    %\n",
    "    sRice(iw) = fitdist([sOut(iw).vtEnvNorm]','Rician');\n",
    "    K_rice = (sRice(iw).s)^2/(2*sRice(iw).sigma^2);\n",
    "    disp(['  Rice: K = ' num2str(K_rice)]);\n",
    "    %\n",
    "    sRay(iw) = fitdist([sOut(iw).vtEnvNorm]','Rayleigh');\n",
    "    disp(['  Rayleigh: sigma = ' num2str(sRay(iw).B)]);\n",
    "    %\n",
    "    sWei(iw) = fitdist([sOut(iw).vtEnvNorm]','Weibull');\n",
    "    disp(['  Weibull: k = ' num2str(sWei(iw).B) ', lambda = ' num2str(sWei(iw).A)]);\n",
    "    disp(' ')\n",
    "end"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**A execução do código resulta em:**\n",
    "1. Mensagens de texto com informações sobre o canal sintético gerado;\n",
    "2. Mensagens de texto com informações sobre os parâmetros das distribuições Nakagami, Rice, Rayleigh e Weibull que melhor se adequam aos dados do desvanecimento de pequena escala. Observe que a melhor janela é W = 50, que o $m$ d Nakagami é exatamente igual a 4.\n",
    "\n",
    "** Analise o código com cuidado. Tente compreender a modelagem e a sintaxe usada. Discuta com os colegas. Faça um debug usando a IDE do Matlab.**\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Assim, baseado no MSE podemos inferir qual o conjunto de parâmetros de uma determinada distribuição que melhor representa os dados medidos. Contudo, isso não nos responde se esse distribuição é a mais adequada. Para responder tal questão, lançamos mão de um tese de hipóteses. Um teste de hipótese é uma metodologia estatística que nos auxilia a tomar decisões sobre uma ou mais populações baseado na informação obtida da amostra [[Fonte]](https://www.inf.ufsc.br/~andre.zibetti/probabilidade/teste-de-hipoteses.html).\n",
    "\n",
    "\n",
    "Uma hipótese estatística é uma afirmação ou conjetura sobre o parâmetro, ou parâmetros, da distribuição de probabilidades de uma característica, $X$, da população ou de uma variável aleatória. Já um teste de uma hipóteses estatística é o procedimento ou regra de decisão que nos possibilita decidir por H0 (hipótese nula) ou Ha (hipótese alternativa), com base a informação contida na amostra (dados medidos). Assim, os dados observados de um determinado experimento são usados para definir **uma regra que rejeição ou não da hipótese nula**. \n",
    "\n",
    "Assim, defini-se a Região crítica (Rc) como o conjunto de valores assumidos pela variável aleatória ou por uma **estatística de teste** para os quais H0 (hipótese nula) é rejeitada [[Fonte]](https://www.ime.unicamp.br/~hlachos/Inferencia_Hipo1.pdf). Geralmente, essa **estatística de teste** está vinculada a algum limite de erro.\n",
    "\n",
    "### Tipos de Erros\n",
    "\n",
    "Na tomada de decisão conforme estabelecido acima, dado algum critério, podemos obviamente estar comentendo algum erro. Classicamente, esses erros são chamados de **erro do tipo I** e **erro do tipo II**:\n",
    "\n",
    " - **Erro do tipo I ($\\alpha$)**: Rejeitar a hipótese nula H0 quando ela é verdadeira;\n",
    " - **Erro do tipo II**: Rejeitar a hipótese alternativa Ha quando ela é verdadeira.\n",
    " \n",
    " A tabela a seguir ilustra os dois tipos de erro.\n",
    " \n",
    "\n",
    "\n",
    "|                 |  Ho Verdadeira   | H1 verdadeira   |\n",
    "|:----------------|-----------------:|-----------------|\n",
    "| **Não rejeitar Ho** |  Decisão correta ($1-\\alpha$) | Erro tipo II ($\\beta$)   |\n",
    "| **Rejeitar Ho**    | Erro tipo I ($\\alpha$)      | Decisão correta ($1-\\beta$) |\n",
    "\n",
    "\n",
    "A **probabilidade do Erro do tipo I**, ($\\alpha$) é chamado de **nível de significância**, ou erro α, ou ainda tamanho do teste, definda como:\n",
    "\n",
    "<center>\n",
    "$\\alpha$ = P(Erro do tipo I) = P(rejeitar H0|H0 verdadeira).\n",
    "</center>\n",
    "\n",
    "Já a **probabilidade do Erro do Tipo II** é:\n",
    "\n",
    "<center>\n",
    "$\\beta$ = P(erro do tipo II) = P(não rejeitar H0|H0 falsa).\n",
    "</center>\n",
    "\n",
    "A **Potência ou Poder do Teste** ou potência é a probabilidade de rejeitar a hipótese nula H0, quando a hipótese alternativa H1 é verdadeira: \n",
    "\n",
    "<center>\n",
    "(1−$\\beta$) = P(rejeitar H0|H1 verdadeira)\n",
    "</center>\n",
    "\n",
    "A Figura a seguir ilustra os tipos de erro ao mostrar as distribuições de probabilidade de um **teste estatístico** para H0 e H1.\n",
    "\n",
    "![fig_poder-do-teste](./FIGS/HD_02/poder-do-teste.png)\n",
    "\n",
    "\n",
    "Note que quanto mais distantes as distribuições do **teste estatístico** para H0 e H1, menor será o erro.\n",
    "\n",
    "Contudo, no caso de teste de hipóteses para aderência estatística, a hipótese H0 é que os dados medidos são de uma determinada distribuição de probabilidades, e Ha é que os dados não seguem essa distribuição. A definição do **teste estatístico** (seu cálculo e sua distribiução) define diferentes testes de hipóteses. Como esse decisão feita e com os dados coletados, deve-se definir um nível de significância alvo, calcular o **teste estatístico** e tomar a decisão comparando o valor de teste com um valor crítico. Os passos são os seguintes:\n",
    "\n",
    "\n",
    "1. Definição as hipóteses H0 e H1;\n",
    "2. Identificação do **teste estatístico** e caracterização da sua distribuição;\n",
    "3. Definição  da  regra  de  decisão,  com a  especificação  do  nível  de significância do teste;\n",
    "4. Cálculo da estatística de teste e tomada de decisão.\n",
    "\n",
    "No passo 4, de posse do valor da estatística de tese e sua distribuição, pode-se calcular o Valor-P, como ilsutrado a seguir para uma estística de teste t = -1,3. Assim, rejeita-se H0 se o Valor−P (probabilidade de cometer o erro do Tipo I) for menor que $\\alpha$. Geralmente, se define um valor baixo para $\\alpha$, por exemplo, 0,05.\n",
    "\n",
    "\n",
    "![fig_teste-de-hipoteses-exemplo-1bb-1](./FIGS/HD_02/teste-de-hipoteses-exemplo-1bb-1.png)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Passo 03:** Crie um script chamado **handson3_P3_4.m** com o código a seguir. Nesse código, vamos manter o mesmo código do **handson3_P3_3.m** e acrescentar:\n",
    "\n",
    "1. Usar o pacote **FitMeThis** [[Fonte]](https://www.mathworks.com/matlabcentral/fileexchange/40167-fitmethis) para achar a melhor distribuição para o desvanecimento de pequena escala,considerando as várias janelas de filtragem;\n",
    "2. Comparar resultados com o que já foi testado até o momento."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Canal sintético:\n",
      "   Média do sombreamento: -0.36305\n",
      "   Std do sombreamento: 5.3957\n",
      "   Janela de correlação do sombreamento: 200 amostras\n",
      "   Expoente de path loss: 4\n",
      "   m de Nakagami: 4\n",
      " \n",
      "Estimação do Fading para várias janelas (estudo númerico sem conhecimento a priori do canal)\n",
      "Resultados com FITMETHIS\n",
      "Janela W = 10\n",
      "\n",
      "\t\t\t\tName\t\tPar1\t\tPar2\t\tPar3\t\tLogL\t\tAIC\n",
      "              rician \t 9.414e-01 \t 2.375e-01 \t\t\t\t 1.727e+03 \t-3.449e+03\n",
      "              normal \t 9.719e-01 \t 2.334e-01 \t\t\t\t 1.710e+03 \t-3.415e+03\n",
      "      tlocationscale \t 9.719e-01 \t 2.334e-01 \t 1.786e+06 \t 1.710e+03 \t-3.413e+03\n",
      "            nakagami \t 4.382e+00 \t 9.991e-01 \t\t\t\t 1.641e+03 \t-3.278e+03\n",
      "                 gev \t-2.084e-01 \t 2.277e-01 \t 8.810e-01 \t 1.572e+03 \t-3.139e+03\n",
      "             weibull \t 1.063e+00 \t 4.559e+00 \t\t\t\t 1.288e+03 \t-2.572e+03\n",
      "            logistic \t 9.705e-01 \t 1.340e-01 \t\t\t\t 1.146e+03 \t-2.287e+03\n",
      "               gamma \t 1.620e+01 \t 6.000e-02 \t\t\t\t 1.084e+03 \t-2.163e+03\n",
      "         loglogistic \t-4.411e-02 \t 1.436e-01 \t\t\t\t 2.768e+02 \t-5.497e+02\n",
      "           lognormal \t-5.968e-02 \t 2.570e-01 \t\t\t\t-3.370e+01 \t 7.139e+01\n",
      "    birnbaumsaunders \t 9.401e-01 \t 2.599e-01 \t\t\t\t-1.711e+02 \t 3.461e+02\n",
      "     inversegaussian \t 9.719e-01 \t 1.415e+01 \t\t\t\t-2.161e+02 \t 4.363e+02\n",
      "                  ev \t 1.089e+00 \t 2.381e-01 \t\t\t\t-2.757e+03 \t 5.519e+03\n",
      "            rayleigh \t 7.068e-01 \t\t\t\t\t\t\t-1.729e+04 \t 3.458e+04\n",
      "             uniform \t 1.557e-01 \t 1.964e+00 \t\t\t\t-2.802e+04 \t 5.604e+04\n",
      "                  gp \t-7.143e-01 \t 1.403e+00 \t\t\t\t-2.952e+04 \t 5.905e+04\n",
      "         exponential \t 9.719e-01 \t\t\t\t\t\t\t-4.594e+04 \t 9.189e+04\n",
      " \n",
      "Janela W = 50\n",
      "\n",
      "\t\t\t\tName\t\tPar1\t\tPar2\t\tPar3\t\tLogL\t\tAIC\n",
      "            nakagami \t 4.037e+00 \t 9.895e-01 \t\t\t\t 3.022e+01 \t-5.644e+01\n",
      "                 gev \t-1.724e-01 \t 2.305e-01 \t 8.663e-01 \t-7.053e+01 \t 1.471e+02\n",
      "              rician \t 9.308e-01 \t 2.480e-01 \t\t\t\t-1.845e+02 \t 3.731e+02\n",
      "              normal \t 9.645e-01 \t 2.431e-01 \t\t\t\t-2.286e+02 \t 4.612e+02\n",
      "      tlocationscale \t 9.645e-01 \t 2.431e-01 \t 1.952e+06 \t-2.286e+02 \t 4.632e+02\n",
      "               gamma \t 1.502e+01 \t 6.422e-02 \t\t\t\t-2.646e+02 \t 5.333e+02\n",
      "            logistic \t 9.593e-01 \t 1.394e-01 \t\t\t\t-7.469e+02 \t 1.498e+03\n",
      "             weibull \t 1.058e+00 \t 4.283e+00 \t\t\t\t-8.054e+02 \t 1.615e+03\n",
      "         loglogistic \t-5.700e-02 \t 1.498e-01 \t\t\t\t-1.099e+03 \t 2.203e+03\n",
      "           lognormal \t-6.976e-02 \t 2.656e-01 \t\t\t\t-1.112e+03 \t 2.228e+03\n",
      "    birnbaumsaunders \t 9.310e-01 \t 2.685e-01 \t\t\t\t-1.201e+03 \t 2.406e+03\n",
      "     inversegaussian \t 9.645e-01 \t 1.315e+01 \t\t\t\t-1.240e+03 \t 2.485e+03\n",
      "                  ev \t 1.088e+00 \t 2.559e-01 \t\t\t\t-5.725e+03 \t 1.145e+04\n",
      "            rayleigh \t 7.034e-01 \t\t\t\t\t\t\t-1.729e+04 \t 3.459e+04\n",
      "                  gp \t-6.010e-01 \t 1.319e+00 \t\t\t\t-3.192e+04 \t 6.385e+04\n",
      "             uniform \t 1.838e-01 \t 2.194e+00 \t\t\t\t-3.299e+04 \t 6.599e+04\n",
      "         exponential \t 9.645e-01 \t\t\t\t\t\t\t-4.555e+04 \t 9.109e+04\n",
      " \n",
      "Janela W = 150\n",
      "\n",
      "\t\t\t\tName\t\tPar1\t\tPar2\t\tPar3\t\tLogL\t\tAIC\n",
      "            nakagami \t 3.597e+00 \t 9.382e-01 \t\t\t\t-1.285e+03 \t 2.575e+03\n",
      "                 gev \t-1.346e-01 \t 2.326e-01 \t 8.301e-01 \t-1.419e+03 \t 2.845e+03\n",
      "               gamma \t 1.337e+01 \t 6.996e-02 \t\t\t\t-1.427e+03 \t 2.858e+03\n",
      "              rician \t 8.977e-01 \t 2.572e-01 \t\t\t\t-1.707e+03 \t 3.418e+03\n",
      "      tlocationscale \t 9.335e-01 \t 2.452e-01 \t 4.209e+01 \t-1.756e+03 \t 3.517e+03\n",
      "              normal \t 9.354e-01 \t 2.513e-01 \t\t\t\t-1.782e+03 \t 3.569e+03\n",
      "            logistic \t 9.278e-01 \t 1.433e-01 \t\t\t\t-2.114e+03 \t 4.232e+03\n",
      "           lognormal \t-1.046e-01 \t 2.814e-01 \t\t\t\t-2.185e+03 \t 4.375e+03\n",
      "         loglogistic \t-9.223e-02 \t 1.588e-01 \t\t\t\t-2.202e+03 \t 4.409e+03\n",
      "    birnbaumsaunders \t 8.989e-01 \t 2.847e-01 \t\t\t\t-2.275e+03 \t 4.555e+03\n",
      "     inversegaussian \t 9.354e-01 \t 1.131e+01 \t\t\t\t-2.317e+03 \t 4.639e+03\n",
      "             weibull \t 1.030e+00 \t 3.972e+00 \t\t\t\t-2.392e+03 \t 4.788e+03\n",
      "                  ev \t 1.064e+00 \t 2.780e-01 \t\t\t\t-8.626e+03 \t 1.726e+04\n",
      "            rayleigh \t 6.849e-01 \t\t\t\t\t\t\t-1.639e+04 \t 3.279e+04\n",
      "                  gp \t-4.725e-01 \t 1.201e+00 \t\t\t\t-3.350e+04 \t 6.700e+04\n",
      "             uniform \t 1.422e-01 \t 2.541e+00 \t\t\t\t-4.125e+04 \t 8.251e+04\n",
      "         exponential \t 9.354e-01 \t\t\t\t\t\t\t-4.400e+04 \t 8.801e+04\n",
      " \n",
      "Janela W = 200\n",
      "\n",
      "\t\t\t\tName\t\tPar1\t\tPar2\t\tPar3\t\tLogL\t\tAIC\n",
      "            nakagami \t 3.194e+00 \t 9.141e-01 \t\t\t\t-3.285e+03 \t 6.573e+03\n",
      "               gamma \t 1.181e+01 \t 7.785e-02 \t\t\t\t-3.368e+03 \t 6.739e+03\n",
      "                 gev \t-1.242e-01 \t 2.408e-01 \t 8.083e-01 \t-3.371e+03 \t 6.748e+03\n",
      "              rician \t 8.763e-01 \t 2.704e-01 \t\t\t\t-3.827e+03 \t 7.658e+03\n",
      "      tlocationscale \t 9.153e-01 \t 2.513e-01 \t 2.313e+01 \t-3.844e+03 \t 7.694e+03\n",
      "              normal \t 9.192e-01 \t 2.631e-01 \t\t\t\t-3.937e+03 \t 7.878e+03\n",
      "         loglogistic \t-1.137e-01 \t 1.689e-01 \t\t\t\t-4.096e+03 \t 8.196e+03\n",
      "            logistic \t 9.099e-01 \t 1.492e-01 \t\t\t\t-4.104e+03 \t 8.213e+03\n",
      "           lognormal \t-1.272e-01 \t 3.002e-01 \t\t\t\t-4.167e+03 \t 8.338e+03\n",
      "    birnbaumsaunders \t 8.784e-01 \t 3.043e-01 \t\t\t\t-4.286e+03 \t 8.577e+03\n",
      "     inversegaussian \t 9.192e-01 \t 9.700e+00 \t\t\t\t-4.338e+03 \t 8.680e+03\n",
      "             weibull \t 1.016e+00 \t 3.708e+00 \t\t\t\t-4.440e+03 \t 8.884e+03\n",
      "                  ev \t 1.054e+00 \t 3.015e-01 \t\t\t\t-1.174e+04 \t 2.349e+04\n",
      "            rayleigh \t 6.761e-01 \t\t\t\t\t\t\t-1.622e+04 \t 3.243e+04\n",
      "                  gp \t-4.252e-01 \t 1.154e+00 \t\t\t\t-3.384e+04 \t 6.768e+04\n",
      "         exponential \t 9.192e-01 \t\t\t\t\t\t\t-4.313e+04 \t 8.627e+04\n",
      "             uniform \t 1.184e-01 \t 2.715e+00 \t\t\t\t-4.494e+04 \t 8.989e+04\n",
      " \n"
     ]
    }
   ],
   "source": [
    "close all;clear all;clc;\n",
    "addpath('./CODES/HD_03_MATLAB/fitmethis')\n",
    "% Estimação com o conhecimento do sombreamento e do fading\n",
    "% Parâmetros para geração do canal sintético\n",
    "sPar.d0 = 5;                     % distância de referência d0\n",
    "sPar.P0 = 0;                     % Potência medida na distância de referência d0 (em dBm)\n",
    "sPar.nPoints = 50000;            % Número de amostras da rota de medição\n",
    "sPar.totalLength = 100;          % Distância final da rota de medição\n",
    "sPar.n = 4;                      % Expoente de perda de percurso\n",
    "sPar.sigma = 6;                  % Desvio padrão do shadowing em dB\n",
    "sPar.shadowingWindow = 200;      % Tamanho da janela de correlação do shadowing (colocar em função da distância de correlação)\n",
    "sPar.m = 4;                      % Parâmetro de Nakagami\n",
    "sPar.txPower = 0;                % Potência de transmissão em dBm\n",
    "sPar.nCDF = 40;                  % Número de pontos da CDF normalizada\n",
    "sPar.dW = 100;                   % Janela de estimação do sombreamento\n",
    "sPar.chFileName  = 'Prx_sintetico';\n",
    "% Distância entre pontos de medição\n",
    "sPar.dMed = sPar.totalLength/sPar.nPoints;\n",
    "%\n",
    "% Chama função que gera o canal sintético\n",
    "[vtDist, vtPathLoss, vtShadCorr, vtFading, vtPrxdBm] = fGeraCanal(sPar);\n",
    "%\n",
    "% Mostra informações do canal sintético\n",
    "disp('Canal sintético:')\n",
    "disp(['   Média do sombreamento: ' num2str(mean(vtShadCorr)) ]);\n",
    "disp(['   Std do sombreamento: ' num2str(std(vtShadCorr)) ]);\n",
    "disp(['   Janela de correlação do sombreamento: ' num2str(sPar.shadowingWindow) ' amostras' ]);\n",
    "disp(['   Expoente de path loss: ' num2str(sPar.n) ]);\n",
    "disp(['   m de Nakagami: ' num2str(sPar.m) ]);\n",
    "%\n",
    "% Várias janelas de filtragem para testar a estimação\n",
    "vtW = [10 50 150 200];\n",
    "for iw = 1: length(vtW)\n",
    "    % Configura valor da janela de filtragem\n",
    "    sPar.dW = vtW(iw);\n",
    "    % Chama função que estima o canal sintético\n",
    "    sOut(iw) = fEstimaCanal(sPar);\n",
    "    % Parser de variáveis\n",
    "    vtDistEst = sOut(iw).vtDistEst;\n",
    "    vtPathLossEst = sOut(iw).vtPathLossEst;\n",
    "    dNEst = sOut(iw).dNEst;\n",
    "    vtShadCorrEst = sOut(iw).vtShadCorrEst;\n",
    "    dStdShadEst = sOut(iw).dStdShadEst;\n",
    "    dStdMeanShadEst = sOut(iw).dStdMeanShadEst;\n",
    "    vtDesPequeEst = sOut(iw).vtDesPequeEst;\n",
    "    vtPrxEst = sOut(iw).vtPrxEst;\n",
    "    vtXCcdfEst = sOut(iw).vtXCcdfEst;\n",
    "    vtYCcdfEst = sOut(iw).vtYCcdfEst;\n",
    "    vtDistLogEst = log10(vtDistEst);\n",
    "    vtDistLog = log10(vtDist);\n",
    "end\n",
    "% Estimação cega via FitMeThis\n",
    "disp(' ')\n",
    "disp('Estimação do Fading para várias janelas (estudo númerico sem conhecimento a priori do canal)');\n",
    "disp('Resultados com FITMETHIS')\n",
    "for iw = 1:length(vtW)%\n",
    "    disp(['Janela W = ' num2str(vtW(iw))]);\n",
    "    %\n",
    "    fitWindow{iw} = fitmethis([sOut(iw).vtEnvNorm]','figure','off');\n",
    "    disp(' ')\n",
    "end"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**A execução do código resulta em:**\n",
    "1. Mensagens de texto com informações sobre o canal sintético gerado;\n",
    "2. Mensagens de texto com informações sobre os parâmetros das distribuições e um rank das melhores distribuições seguindo a métrica de máxima verosimilhança.\n",
    "\n",
    "Observe que a melhor janela continua sendo W = 50 (menor valor absoluto de LogL), que o $m$ d Nakagami é exatamente igual a 4.\n",
    "\n",
    "Pode ser que seja difícil de visualizar a saída do FitMeThis, devido ao tamanho da tela. Mas na saída da IDE do Matlab os dados ficam bem organizados. \n",
    "\n",
    "** Analise o código com cuidado. Tente compreender a modelagem e a sintaxe usada. Discuta com os colegas. Faça um debug usando a IDE do Matlab.**\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Finalmente, vamos fazer o teste clássico Kolmogorov-Smirnov (teste KS) de aderência estatística. O teste KS compara o ECDF (função de distribuição acumulada empírica) de seus dados de amostra com a distribuição alvo. A estatística de teste é o maior valor de erro entre a ECDF e a CDF da distribuição alvo. Assim, o Valor-P é calulcado para medir a evidência contra a hipótese nula. Um Valor-P é comparado como o nível de significância e o resutlado do teste é mostrado. \n",
    "\n",
    "O teste de hipótese é configurado como:\n",
    "\n",
    " - H0: Os dados são da distribuição alvo;\n",
    " - H1: Os dados não são da distribuição alvo\n",
    "\n",
    "Assim, se não rejeitarmos H0, os dados podem ser da distribuição especificada.\n",
    "\n",
    "Como a estatśitica de teste $k$ é a maior diferença entre a CDF dos dados (ECDF) e da distribuição especificada, quanto menor k, melhor o fit.\n",
    "\n",
    "\n",
    "**Passo 03:** Crie um script chamado **handson3_P3_5.m** com o código a seguir. Nesse código, vamos manter o mesmo código do **handson3_P3_4.m** e acrescentar:\n",
    "\n",
    "1. Realizar teste KS (comando **kstest** do Matlab), considerando as várias janelas de filtragem;\n",
    "2. Comparar resultados com o que já foi testado até o momento."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Canal sintético:\n",
      "   Média do sombreamento: -0.7175\n",
      "   Std do sombreamento: 5.7533\n",
      "   Janela de correlação do sombreamento: 200 amostras\n",
      "   Expoente de path loss: 4\n",
      "   m de Nakagami: 4\n",
      " \n",
      "Janela W = 10\n",
      "   Distribuição Weibull: k = 0.020748, p-value = 4.0184e-18\n",
      "     h = 1 => Rejeita a hipótese H0 com nível de significância $\\alpha$ = 5% (p < 0.05).\n",
      "   Distribuição Rician: k = 0.0061024, p-value = 0.058832\n",
      "     h = 0 => Não rejeita a hipótese H0 com nível de significância $\\alpha$ = 5% (p > 0.05).\n",
      "   Distribuição Rayleigh: k = 0.26638, p-value = 0\n",
      "     h = 1 => Rejeita a hipótese H0 com nível de significância $\\alpha$ = 5% (p < 0.05).\n",
      "   Distribuição Nakagami: k = 0.015392, p-value = 3.6404e-10\n",
      "     h = 1 => Rejeita a hipótese H0 com nível de significância $\\alpha$ = 5% (p < 0.05).\n",
      " \n",
      "Janela W = 50\n",
      "   Distribuição Weibull: k = 0.030389, p-value = 2.34e-38\n",
      "     h = 1 => Rejeita a hipótese H0 com nível de significância $\\alpha$ = 5% (p < 0.05).\n",
      "   Distribuição Rician: k = 0.014581, p-value = 3.6994e-09\n",
      "     h = 1 => Rejeita a hipótese H0 com nível de significância $\\alpha$ = 5% (p < 0.05).\n",
      "   Distribuição Rayleigh: k = 0.25728, p-value = 0\n",
      "     h = 1 => Rejeita a hipótese H0 com nível de significância $\\alpha$ = 5% (p < 0.05).\n",
      "   Distribuição Nakagami: k = 0.0046395, p-value = 0.26019\n",
      "     h = 0 => Não rejeita a hipótese H0 com nível de significância $\\alpha$ = 5% (p > 0.05).\n",
      " \n",
      "Janela W = 150\n",
      "   Distribuição Weibull: k = 0.032951, p-value = 6.2848e-45\n",
      "     h = 1 => Rejeita a hipótese H0 com nível de significância $\\alpha$ = 5% (p < 0.05).\n",
      "   Distribuição Rician: k = 0.021798, p-value = 6.6964e-20\n",
      "     h = 1 => Rejeita a hipótese H0 com nível de significância $\\alpha$ = 5% (p < 0.05).\n",
      "   Distribuição Rayleigh: k = 0.23778, p-value = 0\n",
      "     h = 1 => Rejeita a hipótese H0 com nível de significância $\\alpha$ = 5% (p < 0.05).\n",
      "   Distribuição Nakagami: k = 0.0048556, p-value = 0.21553\n",
      "     h = 0 => Não rejeita a hipótese H0 com nível de significância $\\alpha$ = 5% (p > 0.05).\n",
      " \n",
      "Janela W = 200\n",
      "   Distribuição Weibull: k = 0.033368, p-value = 5.1634e-46\n",
      "     h = 1 => Rejeita a hipótese H0 com nível de significância $\\alpha$ = 5% (p < 0.05).\n",
      "   Distribuição Rician: k = 0.026185, p-value = 1.6842e-28\n",
      "     h = 1 => Rejeita a hipótese H0 com nível de significância $\\alpha$ = 5% (p < 0.05).\n",
      "   Distribuição Rayleigh: k = 0.21723, p-value = 0\n",
      "     h = 1 => Rejeita a hipótese H0 com nível de significância $\\alpha$ = 5% (p < 0.05).\n",
      "   Distribuição Nakagami: k = 0.0084858, p-value = 0.0022518\n",
      "     h = 1 => Rejeita a hipótese H0 com nível de significância $\\alpha$ = 5% (p < 0.05).\n"
     ]
    }
   ],
   "source": [
    "close all;clear all;clc;\n",
    "addpath('./fitmethis')\n",
    "%addpath('./CODES/HD_03_MATLAB/fitmethis')\n",
    "% Estimação com o conhecimento do sombreamento e do fading\n",
    "% Parâmetros para geração do canal sintético\n",
    "sPar.d0 = 5;                     % distância de referência d0\n",
    "sPar.P0 = 0;                     % Potência medida na distância de referência d0 (em dBm)\n",
    "sPar.nPoints = 50000;            % Número de amostras da rota de medição\n",
    "sPar.totalLength = 100;          % Distância final da rota de medição\n",
    "sPar.n = 4;                      % Expoente de perda de percurso\n",
    "sPar.sigma = 6;                  % Desvio padrão do shadowing em dB\n",
    "sPar.shadowingWindow = 200;      % Tamanho da janela de correlação do shadowing (colocar em função da distância de correlação)\n",
    "sPar.m = 4;                      % Parâmetro de Nakagami\n",
    "sPar.txPower = 0;                % Potência de transmissão em dBm\n",
    "sPar.nCDF = 40;                  % Número de pontos da CDF normalizada\n",
    "sPar.dW = 100;                   % Janela de estimação do sombreamento\n",
    "sPar.chFileName  = 'Prx_sintetico';\n",
    "% Distância entre pontos de medição\n",
    "sPar.dMed = sPar.totalLength/sPar.nPoints;\n",
    "%\n",
    "% Chama função que gera o canal sintético\n",
    "[vtDist, vtPathLoss, vtShadCorr, vtFading, vtPrxdBm] = fGeraCanal(sPar);\n",
    "%\n",
    "% Mostra informações do canal sintético\n",
    "disp('Canal sintético:')\n",
    "disp(['   Média do sombreamento: ' num2str(mean(vtShadCorr)) ]);\n",
    "disp(['   Std do sombreamento: ' num2str(std(vtShadCorr)) ]);\n",
    "disp(['   Janela de correlação do sombreamento: ' num2str(sPar.shadowingWindow) ' amostras' ]);\n",
    "disp(['   Expoente de path loss: ' num2str(sPar.n) ]);\n",
    "disp(['   m de Nakagami: ' num2str(sPar.m) ]);\n",
    "%\n",
    "% Várias janelas de filtragem para testar a estimação\n",
    "vtW = [10 50 150 200];\n",
    "for iw = 1: length(vtW)\n",
    "    % Configura valor da janela de filtragem\n",
    "    sPar.dW = vtW(iw);\n",
    "    % Chama função que estima o canal sintético\n",
    "    sOut(iw) = fEstimaCanal(sPar);\n",
    "    % Parser de variáveis\n",
    "    vtDistEst = sOut(iw).vtDistEst;\n",
    "    vtPathLossEst = sOut(iw).vtPathLossEst;\n",
    "    dNEst = sOut(iw).dNEst;\n",
    "    vtShadCorrEst = sOut(iw).vtShadCorrEst;\n",
    "    dStdShadEst = sOut(iw).dStdShadEst;\n",
    "    dStdMeanShadEst = sOut(iw).dStdMeanShadEst;\n",
    "    vtDesPequeEst = sOut(iw).vtDesPequeEst;\n",
    "    vtPrxEst = sOut(iw).vtPrxEst;\n",
    "    vtXCcdfEst = sOut(iw).vtXCcdfEst;\n",
    "    vtYCcdfEst = sOut(iw).vtYCcdfEst;\n",
    "    vtDistLogEst = log10(vtDistEst);\n",
    "    vtDistLog = log10(vtDist);\n",
    "end\n",
    "% Teste KS\n",
    "sDistNames = [{'Weibull'};{'Rician'};{'Rayleigh'};{'Nakagami'}];\n",
    "% Test KS (h = 0, não rejeita H0 e os dados podem ser da distribuição especificada;\n",
    "% k é o maior diferença engre a CDF dos dados e da distribuição especificada. Quanto menor k, melhor o fit)\n",
    "for iw = 1:length(vtW)\n",
    "    disp(' ')\n",
    "    disp(['Janela W = ' num2str(vtW(iw)) ]);\n",
    "    for ik = 1:length(sDistNames)\n",
    "        data = [sOut(iw).vtEnvNorm]';\n",
    "        pd = fitdist(data,sDistNames{ik});\n",
    "        x = linspace(min(data),max(data),length(data));\n",
    "        tCDF = [x' cdf(pd,x)'];\n",
    "        [h,p,k,c] = kstest(data,'CDF',tCDF);\n",
    "        sKtest(ik,iw).h = h;\n",
    "        sKtest(ik,iw).p = p;\n",
    "        sKtest(ik,iw).k = k;\n",
    "        sKtest(ik,iw).c = c;\n",
    "        disp(['   Distribuição ' sDistNames{ik} ': k = ' num2str(k) ', p-value = ' num2str(p)]);\n",
    "        % Resultado do teste KS\n",
    "        if (h == 0)\n",
    "            disp('     h = 0 => Não rejeita a hipótese H0 com nível de significância $\\alpha$ = 5% (p > 0.05).');\n",
    "        elseif (h == 1)\n",
    "            disp('     h = 1 => Rejeita a hipótese H0 com nível de significância $\\alpha$ = 5% (p < 0.05).');\n",
    "        end\n",
    "    end\n",
    "end\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**A execução do código resulta em:**\n",
    "1. Mensagens de texto com informações sobre o canal sintético gerado;\n",
    "2. Mensagens de texto com informações sobre os parâmetros das distribuições e o resultado do teste KS, indicando se Rejeita H0 ou não para cada janela de filtragem e distribuição testada.\n",
    "\n",
    "Observe que duas janelas passaram no teste KS para a distribuição Nakagami, W = 50 e W = 150. Mas veja que o teste KS deu a possibilidade dos dados seguirem a distribuição Rice quando a janela foi de W = 10.\n",
    "\n",
    "** Analise o código com cuidado. Tente compreender a modelagem e a sintaxe usada. Discuta com os colegas. Faça um debug usando a IDE do Matlab.**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Entrega 01: Análise de uma medição real (caracterização de canais banda estreita)\n",
    "\n",
    "\n",
    "## Descrição da entrega\n",
    "\n",
    "Tudo até agora foi feito com base em um sinal sintético gerado via simulação. Modifique o código disponibilizado para manipular o arquivo [**Prx_Real_2021_1.mat**](./CODES/HD_03_MATLAB/Prx_Real_2021_1.mat) e estimar o expoente de perda de percurso e o desvio padrão do sombreamento. \n",
    "\n",
    "O arquivo contém as seguintes variáveis:\n",
    "- **dPath**: pontos de medição [m] - um vetor com 200 amostras\n",
    "- **Prx**: potência recebida com o canal completo. Um vetor com 200 amostras, correspondentes aos pontos de medição. Unidade em dBm.\n",
    "\n",
    "Os seguintes gráficos devem ser disponibilizados.\n",
    "\n",
    "   1. Plotar no mesmo gráfico as curvas: potência recebida completa (sujeita ao desvanecimento de larga e pequena escalas) vs distância; potência recebida somente sujeita ao path loss estimado vs distância; potência recebida somente sujeita ao path loss e ao sombreamento estimados vs distância. Identificar as linhas por legendas e cores diferentes. A curvas devem ser feitas em função da distância percorrida na medição. Use W = 5.\n",
    "   2. Fazer a estimativa para os seguintes valores da janela W = 2, 5, 10. Fazer uma tabela com o seguinte formato:\n",
    "\n",
    "|Janela | Desvio padrão do sombreamento estimado | Média do sombreamento estimado |\tExpoente de perda de percurso estimado |\n",
    "|-----------------\t|------------------\t|-----------------\t|-----------------\t|\n",
    "|W = 2 | | | |\t\t\t\n",
    "|W = 5 | | | |\t\t\t\n",
    "|W = 10 | | | |\t\t\t\n",
    "\n",
    "   3. Use um programa de PDF fitting (e.g. o Easyfit) e carregue os dados do desvanecimento de pequena escala. Mostre qual é a melhor distribuição (e seus parâmetros) para cada janela de filtragem simulada. Apresente e discuta a seguinte tabela:\n",
    "\n",
    "|Janela\t| Primeira melhor PDF | Parâmetro(s) da primeira melhor PDF |\tSegunda melhor PDF |\tParâmetro(s) da segunda melhor PDF|\n",
    "|-----------------\t|------------------\t|-----------------\t|-----------------\t|\n",
    "|W = 2 | | | |\t\t\t\t\n",
    "|W = 5 | | | |\t\t\t\t\n",
    "|W = 10 | | | |\t\t\t\t\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Leituras e pacotes estatísticos interessantes:\n",
    "\n",
    " - Teste de estacionariedade: [KPSS test](https://www.mathworks.com/help/econ/kpsstest.html\n",
    " - Teste de hipoteses para distribuição normal\n",
    "  - [Kolmogorov-Smirnov test](https://www.mathworks.com/help/stats/kstest.html)\n",
    "  - [Anderson-Darling test](https://www.mathworks.com/help/stats/adtest.html)\n",
    "  - [Chi-square goodness-of-fit test](https://www.mathworks.com/help/stats/chi2gof.html)\n",
    "\n",
    " - Fitting de distribuições\n",
    "  - Distribution Fitter app\n",
    "    - [distributionFitter 1](https://www.mathworks.com/help/stats/distributionfitter.html)\n",
    "    - [distributionFitter 2](https://www.mathworks.com/help/stats/distributionfitter-app.html)\n",
    "    - [distributionFitter 3](https://www.mathworks.com/help/stats/model-data-using-the-distribution-fitting-tool.html)\n",
    "\n",
    " - Fit probability distribution [Fitdist](https://www.mathworks.com/help/stats/fitdist.html)\n",
    " - Fit Gaussian mixture model to data [Fitgmdist](https://www.mathworks.com/help/stats/fitgmdist.html)\n",
    " - Histogram with a distribution fit [Histfit](https://www.mathworks.com/help/stats/histfit.html)\n",
    " - Confidence intervals for probability distribution parameters [paramci](https://www.mathworks.com/help/stats/prob.normaldistribution.paramci.html)\n",
    " - Estimação de parâmetros de distribuições\n",
    " - [Matlab: Maximum likelihood estimates (MLEs) for the parameters of a normal distribution] (https://www.mathworks.com/help/stats/mle.html)\n",
    " - [MEMLET: An Easy-to-Use Tool for Data Fitting and Model Comparison Using Maximum-Likelihood Estimation] (https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4968482/)\n",
    " - Funções úteis\n",
    "   - [Histogram plot](https://www.mathworks.com/help/matlab/ref/matlab.graphics.chart.primitive.histogram.html\n",
    "   - [Create probability distribution](https://www.mathworks.com/help/stats/makedist.html)\n",
    "   - [Probability density function](https://www.mathworks.com/help/stats/prob.normaldistribution.pdf.html)\n",
    "   - [Cumulative distribution function](https://www.mathworks.com/help/stats/prob.normaldistribution.cdf.html)\n",
    "   - [Create Gaussian mixture model](https://www.mathworks.com/help/stats/gmdistribution.html)\n",
    "   - [Curve Fitting and Distribution Fitting](https://www.mathworks.com/help/stats/examples/curve-fitting-and-distribution-fitting.html)\n",
    "   - [Profile likelihood function for probability distribution](https://www.mathworks.com/help/stats/prob.normaldistribution.proflik.html)\n",
    "   - [Negative loglikelihood of probability distribution](https://www.mathworks.com/help/stats/prob.normaldistribution.negloglik.html)\n",
    "\n",
    "\n",
    "\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Matlab",
   "language": "matlab",
   "name": "matlab"
  },
  "language_info": {
   "codemirror_mode": "octave",
   "file_extension": ".m",
   "help_links": [
    {
     "text": "MetaKernel Magics",
     "url": "https://github.com/calysto/metakernel/blob/master/metakernel/magics/README.md"
    }
   ],
   "mimetype": "text/x-matlab",
   "name": "matlab",
   "version": "0.14.3"
  },
  "latex_envs": {
   "LaTeX_envs_menu_present": true,
   "autoclose": false,
   "autocomplete": true,
   "bibliofile": "biblio.bib",
   "cite_by": "apalike",
   "current_citInitial": 1,
   "eqLabelWithNumbers": true,
   "eqNumInitial": 1,
   "hotkeys": {
    "equation": "Ctrl-E",
    "itemize": "Ctrl-I"
   },
   "labels_anchors": false,
   "latex_user_defs": false,
   "report_style_numbering": false,
   "user_envs_cfg": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
